UNIVERSIDAD POLITÉCNICA DE VALENCIA DEPARTAMENTO DE SISTEMAS INFORMÁTICOS Y COMPUTACIÓN TESIS DOCTORAL Aproximación Paralela al Problema Inverso de Valores Propios Pedro Enrique Alberti Villalobos Director: Dr. D. Antonio M. Vidal-Maciá Valencia, Marzo 2005.
Resumen n Problema Inverso de Valores Propios (PIVP) es la reconstrucción de una matriz U desde sus datos espectrales (auto-valores o valores propios). La complejidad del PIVP reside en construir una matriz que mantenga ciertas características específicas de estructura, así como la característica espectral dada. En esta tesis se ha desarrollado por una parte un estudio de un tipo de problema que no tiene más de 20años de investigación de forma aislada al problema físico. El objetivo principal de esta tesis es el diseño e implementación de algoritmos con técnicas de procesamiento paralelo, todos los algoritmos tienen un estudio e implementación paralela. Los diversos algoritmos desarrollados en forma secuencial en una etapa primaria son una mejora de los algoritmos presentados por la comunidad científica y además se presentan algoritmos secuenciales que se consideran un aporte nuevo a la investigación científica en este tipo de problemas. Así, de este modo, en esta tesis se han desarrollado diversos algoritmos secuenciales y paralelos portables y eficientes que resuelven el Problema Inverso de Valores Propios. Además se ha tratado que los algoritmos obtenidos sean estables y ofrezcan resultados generales y precisos. Las implementaciones se han llevado a cabo sobre una arquitectura paralela distribuida de alta disponibilidad (cluster de PCs). Por último, se ha aplicado con buenos resultados, un tipo de algoritmo para solucionar Problemas Inversos Aditivos No Simétrico de Valores Propios a un caso práctico: En el problema de asignación de polos.
Abstract Inverse Eigenvalue Problem (PIVP) it is the reconstruction of a matrix from its spectral data (eigenvalue). The complexity of the PIVP resides in constructing a matrix that maintains certain characteristics specific of structure, as well as the given spectral characteristic. In this thesis a study of a kind of problem has been developed on the one hand that it does not have more than 20years of investigation of isolated form to the physical problem. The primary target of this thesis is the design and implementation of algorithms with techniques of parallel processing, all the algorithms have a study and parallel implementation. Thus, this way, in this thesis diverse portable and efficient sequential and parallel algorithms have been developed that solve the Inverse Eigenvalue Problem. In addition one has treated that the obtained algorithms are stable and offer general and precise results.the implementations have been carried out on a distributed parallel architecture of high availability (to cluster of PCs). Finally, it has been applied with good results, a type of algorithm to solve to Inverse Additives nonsymmetrical eigenvalue Problems to a practical case: In the "problem of allocation of poles". iv
Agradecimientos uiero manifestar mi agradecimiento a algunos de quienes, directa o indirectamente, debo el resultado de esta Tesis doctoral, ya que me sería imposible Q mencionarlos a todos. En primer lugar, quiero agradecer especialmente a mi director y tutor en este doctorado; Doctor Antonio Vidal Maciá que siempre con su rigurosidad investigativa y paciencia ponderó el desarrollo de esta tesis doctoral y logró quitar algunas aristas de esta piedra bruta. A mi esposa que me ha regalado, desde su adolescencia, este tiempo compartido y el cariño que siempre ha mantenido en su corazón por mí... GRACIAS Patricia... por tu paciencia y esperar siempre lo mejor de mi... Mi más profundo agradecimiento a Juan Aguilar Pérez que ha sido la imagen de sabiduría, constancia y bonomía; que me enseño que le río cambia; que del espejo de la verdad cada uno tiene su pedacito; gracias por esa imagen paterna que nunca tuve y porque siempre has creído en mi... Agradecer a Bernabé Hernandis, que fue el que me trajo a España y me inscribió en este doctorado; por que siempre has estado allí; por tu fraternidad y amistad sin condiciones. Agradecer a los miembros del Departamento de Sistemas informáticos y Computación de la Universidad Politécnica de Valencia. Especialmente al grupo de Computación Paralela con el cual comencé esta aventura y di mis primero pasos. Especialmente a David Guerrero López, Pedro Antonio Ruiz Martínez, Jesús Peinado Pinilla, Fernando Alvarruiz Bermejo, Enrique Arias Antúnez, Ignacio Blanquer Espert, José E. Román Moltó y José Miguel Alonso Ábalos por el apoyo para el desarrollo de este doctorado. Agradecer expresamente la enseñanza recibida y las sugerencias recibidas
durante estos años de los doctores Antonio Vidal, Vidente Hernández y Vicente Vidal. No puedo dejar de agradecer al GTI que me acogió como uno más de ellos y que han sufrido mi constante asedio. Gracias por soportar mis desventuras. A la Universidad de Magallanes que creyó enmiymeapoyó enestaaventura. Gracias a todos... vi
Índice general 1. Introducción 13 1.1. Objetivos.................................. 15 1.2. Organización................................ 16 1.3. Estado del Arte del Problema Inverso de Valores Propios General... 17 1.4. Estado del Arte de los Algoritmos Paralelos del PIVP General.... 23 2. Entornos Paralelos 25 2.1. Tipos de Máquinas utilizadas....................... 25 2.1.1. Motivación............................. 25 2.1.2. Arquitectura utilizada....................... 26 2.1.3. Máquinas utilizadas........................ 27 2.1.3.1. Red de PCs........................ 28 2.1.3.2. Máquina Ramses..................... 28 2.1.3.3. Máquina Kipling..................... 29 2.1.3.4. Kefren.......................... 30 2.1.4. Índices de Prestaciones....................... 31 2.1.4.1. Tiempo de ejecución................... 31 2.1.4.2. Ganancia de velocidad (Speed-Up)........... 32 2.1.4.3. Eficiencia......................... 32 2.1.4.4. Escalabilidad....................... 33 2.1.5. Factores que afectan a la Computación en Paralelo....... 33 2.2. Programación Paralela........................... 35 2.2.1. Introducción............................ 35 2.2.2. MPI................................. 35 vii
ÍNDICE GENERAL 2.2.3. LAPACK.............................. 36 2.2.3.1. Estructura del LAPACK................ 36 2.2.3.2. Nomenclatura de las rutinas LAPACK........ 37 2.2.4. ScaLAPAK. Paralelismo...................... 39 2.2.4.1. Topologías y distribución de datos........... 39 3. El Problema Inverso Aditivo devalores Propios 43 3.1. Planteamiento del Problema........................ 43 3.2. Existencia de solución........................... 47 3.2.1. Problema Inverso Aditivo Simétrico de Valores Propios..... 47 3.2.2. Problema Inverso Aditivo No Simétrico de Valores Propios.. 51 3.3. Resolución del PIAVP........................... 55 3.4. Implementación de los Algoritmos.................... 58 3.4.1. Subrutinas y costes......................... 59 3.4.1.1. Coste Secuencial..................... 59 3.4.1.2. Coste Paralelo...................... 59 3.4.2. Comprobación de la Convergencia................ 60 3.5. Modelos de Prueba............................. 61 4. Métodos para el PIASVP (con Espectro Completo) 65 4.1. Introducción................................. 65 4.2. Método I Newton............................. 66 4.2.1. Algoritmo Secuencial del Método I............... 69 4.2.1.1. Coste secuencial del Método I............. 71 4.2.2. Algoritmo Paralelo del Método I................ 72 4.2.2.1. Cálculo del Coste Paralelo Método I.......... 76 4.2.3. Experimentación.......................... 77 4.2.3.1. Estudio de la convergencia............... 77 4.2.3.2. Análisis del Algoritmo Secuencial........... 78 4.2.3.3. Análisis del Algoritmo Paralelo............. 79 4.3. Método II Newton aproximado mediante iteración inversa...... 84 4.3.1. Algoritmo Secuencial del Método II.............. 85 4.3.1.1. Coste Secuencial Método II............... 88 4.3.2. Algoritmo Paralelo del Método II................ 89 viii
ÍNDICE GENERAL 4.3.2.1. Coste Paralelo Método II................ 93 4.3.3. Experimentación.......................... 95 4.3.3.1. Estudio de la Convergencia............... 95 4.3.3.2. Análisis del Algoritmo Secuencial........... 96 4.3.3.3. Análisis del Algoritmo Paralelo............. 97 4.4. Método III Newton mediante Transformaciones de Cayley..... 102 4.4.1. Algoritmo Secuencial del Método III.............. 105 4.4.1.1. Coste Secuencial del Método III............ 108 4.4.2. Algoritmo paralelo Método III.................. 108 4.4.2.1. Coste Paralelo del Método III............. 111 4.4.3. Experimentación.......................... 112 4.4.3.1. Estudio de la convergencia............... 112 4.4.3.2. Análisis del Algoritmo Secuencial Método III..... 114 4.4.3.3. Análisis del Algoritmo Paralelo Método III...... 114 4.5. Método IV Newton aproximado mediante determinantes...... 119 4.5.1. Algoritmo Secuencial del Método IV.............. 120 4.5.1.1. Coste Método IV..................... 122 4.5.2. Algoritmo Paralelo Método IV.................. 123 4.5.2.1. Coste Paralelo Método IV................ 127 4.5.3. Experimentación.......................... 128 4.5.3.1. Estudio de la convergencia............... 128 4.5.3.2. Análisis del Algoritmo Secuencial........... 129 4.5.3.3. Análisis del Algoritmo Paralelo............. 130 4.6. Método Broyden.............................. 135 4.6.1. Coste secuencial del Método Broyden.............. 139 4.6.2. Algoritmo Paralelo Método de Broyden............. 139 4.6.2.1. Coste Paralelo Método de Broyden........... 141 4.6.3. Experimentación.......................... 141 4.6.3.1. Estudio de la convergencia............... 141 4.6.3.2. Análisis del Algoritmo Secuencial........... 142 4.6.3.3. Análisis del Algoritmo Paralelo............. 143 4.7. Comparación de los Métodos Estudiados................. 148 4.7.1. Costes Teóricos........................... 148 ix
ÍNDICE GENERAL 4.7.2. Análisis de las Experimentaciones................ 149 4.7.3. Conclusiones Generales del Capítulo............... 152 5. Métodos para el PIASVP (con Parte del Espectro) 155 5.1. Introducción................................. 155 5.2. Método Elevación y Proyección..................... 157 5.2.1. Solución del Problema de Permutación.............. 158 5.2.2. Algoritmo Secuencial de la Optimización............. 160 5.2.2.1. Coste Secuencial de la Optimización.......... 161 5.2.3. Solución del Método de Elevación y Proyección......... 162 5.2.4. Análisis de la Convergencia.................... 164 5.2.5. Implementación del Algoritmo Secuencial del Método Elevación yproyección............................ 164 5.2.6. Coste Secuencial del Método Elevación y Proyección...... 165 5.2.7. Paralelización del Algoritmo de Elevación y Proyección.... 166 5.2.8. Coste Paralelo del Método Elevación y Proyección....... 169 5.2.9. Experimentación.......................... 171 5.2.9.1. Análisis del Algoritmo Secuencial........... 171 5.2.9.2. Análisis del Algoritmo Paralelo............ 172 5.3. Método Newton Mínimos Cuadrados................... 177 5.3.1. Solución Secuencial del Método de Newton Mínimos Cuadrados 177 5.3.2. Algoritmo Secuencial del Método de Newton.......... 180 5.3.2.1. Coste Secuencial del Método de Newton Mínimos Cuadrados........................... 182 5.3.3. El Algoritmo Paralelo Método de Newton............ 183 5.3.4. Coste Paralelo del Método de Newton.............. 185 5.3.4.1. Coste Aritmético Teórico del Método de Newton... 185 5.3.5. Coste Teórico de las Comunicaciones del Método de Newton.. 186 5.3.6. Experimentación.......................... 188 5.4. Comparación de los Métodos Estudiados................. 192 5.4.1. Análisis Global del Coste Teórico................. 192 5.4.2. Modelo Híbrido........................... 193 x
ÍNDICE GENERAL 6. El Problema Inverso Aditivo No Simétrico de Valores Propios. 197 6.1. Planteamiento del problema........................ 197 6.2. Algoritmo de Newton por fuerza bruta.................. 198 6.2.1. Algoritmo secuencial Método Newton por Fuerza Bruta..... 199 6.2.1.1. Coste secuencial Método Fuerza Bruta......... 208 6.2.2. Algoritmo Paralelo del Método de Newton por Fuerza Bruta.. 209 6.2.2.1. Coste Paralelo Método Newton fuerza bruta...... 211 6.2.3. Experimentación........................... 212 6.2.3.1. Análisis de los resultados de la convergencia...... 212 6.2.3.2. Análisis del Algoritmo Secuencial............ 213 6.2.3.3. Análisis del Algoritmo Paralelo............. 215 6.3. Algoritmo de Newton por diferencias finitas............... 219 6.3.1. Algoritmo secuencial Método Newton por Diferencias Finitas.. 221 6.3.1.1. Coste Secuencial del Método Newton por Diferencias Finitas.......................... 222 6.3.2. Algoritmo Paralelo Método Newton por Diferencias Finitas... 223 6.3.3. Experimentación........................... 225 7. El Problema Inverso de Asignación de Polos 233 7.1. Introducción................................. 233 7.2. Solución Secuencial............................. 236 7.3. Solución Paralela.............................. 237 8. Conclusiones finales y líneas abiertas 245 8.1. Algoritmos secuenciales.......................... 245 8.2. Algoritmos paralelos............................ 247 8.3. Aplicación de estudio............................ 248 8.4. Implementación de los algoritmos paralelos............... 249 8.5. Líneas Abiertas y Trabajos Futuros.................... 250 8.6. Difusión de Resultados y Soporte de la Tesis............... 251 Bibliografía 255 xi
ÍNDICE GENERAL xii
Capítulo 1 Introducción l desarrollo de esta tesis se ha centrado en Diseñar, Especificar e Implementar rutinas de Altas Prestaciones, Secuenciales y Paralelas, que resolvieran el Problema E Inverso de Valores Propios (PIVP). Un Problema Inverso de Valores Propios (PIVP) es la reconstrucción de una matriz desde sus datos espectrales (auto-valores o valores propios). El objetivo del PIVP está en construir una matriz que mantenga ciertas características específicas de estructura, así como esa característica espectral dada. Asociado a este tipo de problemas existe una dificultad en la computabilidad, es decir, desarrollar un procedimiento para que a partir de los datos espectrales dados, se pueda construir con ellos numéricamente una matriz. Los datos espectrales pueden o no tener toda la información de los valores propios. El propósito de esta Tesis doctoral es desarrollar algoritmos de altas prestaciones estables que solucionen un tipo de Problema Inverso de Valores Propios en particular que podemos denominar: El Problema Inverso Aditivo de Valores Propios General (PIAVPG). Problema (PIAVPG) Dadas matrices reales simétricas, de tamaño n n, A 0,A 1,...A n 13
y un conjunto de número reales λ 1 λ 2... λ n, buscar d R n tal que los valores propios λ 1 (d) λ 2 (d)... λ n (d) de n A(d) :=A 0 + d k A k (1.1) k=1 satisfagan λ i (d) =λ i para i =1,..., n. Una vez resuelto el Problema Inverso Aditivo Simétrico de Valores Propios, el trabajo se puede extender a matrices generales y a valores propios complejos. Además, existe otra serie de problemas inversos que pueden plantearse en los mismos términos que el Problema Inverso Aditivo de Valores Propios General (PIAVPG), sin más que elegir adecuadamente las matrices A 0,A 1,,A n.(ver (Berentein and Yang, 1986; Chen and Chu, 1996; Chu and Guo, 1991)). En (Chen and Chu, 1996) se prueba que los Problemas Inversos de Valores Propios no siempre tienen solución o a veces se plantean a partir de solamente una parte de la información de los valores propios. Por ello, una buena forma de abordarlos es plantear una solución de mínimos cuadrados. El Problema Inverso de Valores Propios es de gran importancia en muchas aplicaciones de ingeniería (Chen and Chu, 1996; Chu, 1991a, 1998; Friedland, 1977; Friedland, 1992; Golub and Loan, 1996; Chu, 1989; Chu and Guo, 1991). El factor común de los PIVP en aplicaciones de ingeniería, es que los parámetros físicos de un cierto sistema, se reconstruyen del conocimiento de su conducta dinámica, en particular de sus frecuencias naturales y/o modos normales. Si los parámetros físicos pueden ser descritos matemáticamente en forma de matriz, entonces tenemos un problema inverso de valores propios. Se puede encontrar numerosas referencias tanto con respecto a su planteamiento y soluciones teóricas, como con respecto a las implementaciones en (Chu, 1991a; Friedland, 1975, 1977; Golub and Loan, 1996). Hasta el momento, la mayoría de los algoritmos discutidos en la literatura para resolver el PIAVPG son de tipo secuencial, utilizando matrices que tienen un tamaño muy reducido y que suponen a priori una solución (real) conocida. El PIAVPG tiene un enorme coste computacional, lo cual lo hace especialmente adecuado para su implementación sobre computadores paralelos. El estudio y desarrollo computacional se enfocará hacia problemas de gran tamaño 14
1. Introducción y en forma paralela. Se pretende disponer de herramientas rápidas y eficientes para investigar y comprender el comportamiento de los métodos en una gran variedad de circunstancias, especialmente con matrices de tamaño razonablemente grande. Puede afirmarse que en la actualidad existen algunos algoritmos fiables para resolver el Problema Inverso de Valores Propios (Chu, 1991a; Friedland, 1977) en un computador secuencial. Sin embargo, se han realizados pocos análisis para obtener algoritmos eficientes que resuelvan este problema con matrices grandes y prácticamente no se ha realizado ningún algoritmo para computadores paralelos. 1.1. Objetivos El objetivo de esta tesis es el estudio del Problema Inverso de Valores Propios y en particular, el Problema Inverso Aditivo de Valores Propios General (PIAVPG), haciendo énfasis en la existencia de soluciones matemáticas, en el análisis de los distintos algoritmos, así como la manera de implementar de forma más eficiente estos algoritmos de modo secuencial; preocupándonos tanto por la portabilidad como por la eficiencia y evaluándolos a través de casos de estudios. A partir de este estudio es posible diseñar algoritmos paralelos, pensando en que la implementación sea eficiente, portable y robusta. Estos algoritmos se evaluarán de forma teórica y se contrastarán experimentalmente en máquinas paralelas (cluster de PC's). Una vez resuelto este problema, se podrán resolver casos particulares de interés por su alto uso en ingeniería. Por ejemplo en el problema de asignación de polos. Se trata de llevar a cabo la paralelización sobre máquinas con paso de mensajes de un conjunto de algoritmos lo más amplio posible, de tal forma que se han de poder aplicar a cualquier problema que implique la resolución de un Problema Inverso de Valores Propios. Para este propósito es conveniente utilizar y así lo hemos hecho, paquetes robustos con núcleos computacionales como BLAS, LAPACK, BLACS, PBLAS y SCALAPACK (Anderson et al., 1995a,b; Blackford et al., 1997; Dongarra and Whaley, 1995), funcionando en el caso paralelo bajo el entorno MPI (Snir et al., 1996). El código implementado usa el lenguaje de programación ANSI C (Press et al., 1992). El entorno utilizado trabaja sobre el sistema operativo LINUX/UNIX. Otro aspecto importante que se ha conseguido en el desarrollo de todas las aplicaciones 15
1.2. Organización es la portabilidad de las mismas, gracias a la utilización de los estándares de BLAS, LAPACK, BLACS, PBLAS y ScaLAPACK. Resumiendo, esta tesis se ha centrado en el análisis, diseño, implementación y evaluación de algoritmos secuenciales y paralelos para la solución del Problema Inverso de Valores Propios, desarrollando algoritmos paralelos eficientes para que se adapten a las características de los computadores actuales, ya sean computadores de altas prestaciones o computadores paralelos, reduciendo el coste de ejecución y ampliando los casos de estudio a problemas de tamaños razonablemente grandes. 1.2. Organización En el capítulo 1, después de esta introducción, se presentan los objetivos que se pretenderán y se alcanzaron en esta tesis doctoral. Siguiendo por el estado del arte referente al problema general y particular del Problema Inverso de Valores Propios, tanto en la existencia de solución como los algoritmos secuenciales propuestos por la comunidad científica. Para terminar, se expondrá el estado del arte referente a la existencias de algoritmos paralelos para resolver PIVP. En el capítulo 2, se plantean los entornos paralelos en que se va a desarrollar esta tesis doctoral; la importancia del procesamiento paralelo para la computación actual. Las arquitecturas paralelas; una clasificación de los computadores para procesamiento paralelo; índices de prestaciones. Los factores que afectan la computación paralela. La forma de programar en máquinas paralelas; MPI, LAPACK, ScaLAPACK. En el capítulo 3, se plantea el Problema Inverso de Valores Propios como un Problema Inverso Aditivo Simétrico de Valores Propios y se realiza un análisis referente a la existencia de solución; La implementación de los algoritmos secuenciales y paralelos, los detalles básicos de los diferentes costes computacionales y modelos de pruebas. En el capítulo 4, se verán una serie de algoritmos que resuelven el Problema Inverso Aditivo Simétrico de Valores Propios. Estos problemas poseen toda la información de los valores y vectores propios. Son métodos iterativos. Se plantea primero el método de Newton clásico y posteriormente se plantean algunas aproximaciones al método de Newton, aproximaciones que se consideran como las más representativas y con las mejores prestaciones. Se propone un método tipo Broyden que no esta estudiado en 16
1. Introducción este tipo de problemas con excelentes resultados. Por último se presenta un resumen de los distintos costes teóricos y experimentaciones realizadas. Se analizará su rapidez, eficiencia y precisión. En el capítulo 5, se tratarán otra serie de algoritmos que resuelven el Problema Inverso Aditivo Simétrico de Valores Propios según los datos espectrales que se quieran obtener; estos pueden tener toda o parte de la información, estar repetidos o no. Se presenta un modelo híbrido que recoge lo mejor de los algoritmos implementados en este capítulo. En el capítulo.6, se plantea el Problema Inverso Aditivo No Simétrico de Valores Propios. Vemos que la mayoría de los algoritmos propuestos son generalmente restringidos a problemas de matrices simétricas. No hemos encontrado ninguno que resuelva este tipo de problema y menos algoritmos secuenciales o paralelos. Los tipos de máquinas utilizadas en las experiencias; los modelos de prueba y la existencia de solución. En el capítulo 7, se propone un problema de estudio que puede ser resuelto con las técnicas desarrolladas. Es un ejercicio de aplicación. Por último en el capítulo 8, se exponen algunas conclusiones, así como líneas de investigación que quedan abiertas para futuros trabajos. El objetivo de este último capítulo es también ofrecer a futuros usuarios e investigadores la experiencia obtenida. 1.3. Estado del Arte del Problema Inverso de Valores Propios General Entre las primeras referencias sobre el Problema Inverso de Valores Propios nos encontramos que en 1986, Friedland, Overton y Nocedal (Friedland et al., 1987) formulan este problema (PIVP) de forma aislada al problema físico, analizando y proponiendo algunos métodos de convergencia cuadrática local para resolver un problema inverso de valores propios con matrices simétricas. El problema que abordan es el siguiente: Sea A(c) =A 0 + n k=1 c ka k, donde c R n y {A k } es una familia de matrices reales, simétricas y de tamaño n n. Los valores propios de A(c) son {λ i (c)} n 1 donde λ 1 (c) λ n (c). Denominan Problema Inverso de Valores Propios a: Dado números reales λ 1 λ n, buscar c R n tal que λ i (c) =λ i. 17
1.3. Estado del Arte del Problema Inverso de Valores Propios General Agregan que A(c) puede ser definida de distintas formas, por ejemplo A(c) = A 0 + D donde D es diagonal de (c k ). Para la solución de este problema utilizan algoritmos tipo Newton; finalizan con una experimentación con matrices tipo Toeplitz de tamaño pequeño 8 8 y 6 6, y una comparación de los resultados de los distintos algoritmos. En 1991 Moody Chu (Chu, 1991a), hace una modificación al método III de (Friedland et al., 1987) para solucionar el problema inverso de valores singulares; además presenta algunas implementaciones con matrices de 5x5. En (Chu, 1991b; Chu and Gou, 1998; Chen and Chu, 1996) propone variantes del Método de Newton para el caso en que las matrices {A k }son de tipo Toeplitz, ya que estas matrices tienen una estructura determinada; propone una variante denominado tangente y elevación que es bastante similar al método III de (Friedland et al., 1987), diferenciándose en que la iteración del nuevo método ahora se restringe a conjuntos más pequeños. En 1992 Friedland (Friedland, 1992) resuelve el problema inverso de valores propios de matrices simétricas de Toeplitz Complejas y utiliza las características dadas de esas estructuras de las matrices de Toeplitz y el método de Newton utilizado en (Friedland et al., 1987). En 1995, en (Erra and Philippe, 1995) se considera la estructura de los datos y la solución mediante algoritmos tipo Newton. Se hace además, un análisis de las matrices estructuradas tri-diagonales, concentrándose en el caso en que la matriz Jacobiana es simétrica. Un método interesante es el propuesto por Moody Chu en 1996 (Chen and Chu, 1996). Propone un algoritmo iterativo (método llamado elevación y proyección ), es una solución pensada en los conjuntos convexos; haciendo notar que el método converge global pero lentamente, lo que hace de este método diferente a los estudiados en los artículos anteriores. Realiza un estudio del comportamiento del problema inverso de mínimos cuadrados de valores propios, además de proponer hacer un algoritmo híbrido, usando el método de elevación y proyección como un paso previo para aplicar posteriormente un algoritmo tipo Newton, que converge de forma cuadrática muy rápidamente pero en manera local y así se asegura un buen el éxito de la convergencia y a la vez mejora su velocidad. En 1997 William Trench en (Trench, 1997) presenta una solución numérica del problema inverso de valores propios para matrices reales simétricas de Toeplitz, uti- 18
1. Introducción lizando para ello el método de Newton, explotando un teorema de Landau y las propiedades especiales de las matrices de Toeplitz. Propone que el método, aunque no esta probado, es de convergencia global. En el año 2001, Dirk Laurie en (Laurie, 2001) se inspira en la demostración de un teorema de Landau para implementar un método para solucionar el problema inverso de valores propios con matrices reales de Toeplitz e introduce como idea principal el método de interpolación; implementa un algoritmo en Matlab para evaluar sus resultados. Los problemas del Problema Inverso de Valores Propios que se han revisado son de importancia y más aún las subclases del Problema Inverso de Valores Propios, tanto así como el modelamiento matemático o la identificación de los parámetros que involucra. En 1998, Moody Chu propone una descripción de los tipos de problemas inversos de valores propios en (Chu, 1998), realizando una clasificación de los diferentes tipos de problemas inversos de valores propios. A pesar de que existen otras formas de clasificarlos, esta nos parece más acertada; se hace un repaso breve de éstos y destacaremos los más generales. MVIEP PIEP LSIEP AIEP MIEP SIEP PDIEP Figura 1.1: Representación de los tipos de Problemas Inversos de Valores Propios. A partir de la figura 1.1, podemos describir los tipos de problemas inversos de valores propios. Donde: 19
1.3. Estado del Arte del Problema Inverso de Valores Propios General PIEP = problema parametrizado inverso de valores propios. AIEP = problema aditivo inverso de valores propios. MIEP = problema multiplicativo inverso de valores propios. SIEP = problema Estructurado inverso de valores propios. LSIEP = problema de mínimos cuadrado inverso de valores propios. PDIEP = problema parcialmente descrito inverso de valores propios. MVIEP = problema multivariable inverso de valores propios. Analicemos brevemente cada uno de ellos: Notación usada: F representa el cuerpo de los números Reales o de los números Complejos. A, B representa a matrices. b (v),q (v) i,v i representa a vectores. σ(a) representa el espectro de A. M,ℵ representa cierto subconjunto de matrices cuadradas de tamaño según su contexto. En particular pueden ser: R(n) :=R n n, S(n) :={todas las matrices simétricas en R(n)}, O(n) :={todas las matrices ortogonales en R(n)}, D R (n) :={todas las matrices diagonales en R(n)}, C(n) :=matrices complejas C n n, H(n) :={todas las matrices hermitianas en C(n)}, D C (n) :={todas las matrices diagonales en C(n)}. (PIEP) Dada una familia de matrices A(c) M, conc =[c 1,c 2,..., c m ] F m y escalares {λ 1,,λ n } F, buscar un parámetro c tal que σ(a(c)) = {λ 1,,λ n }. Debe notar que el número m en c puede ser diferente de n. Los siguientes dos problemas pueden ser una restricción del problema parametrizado inverso de valores propios y son de extensiva mención en la literatura. (AIEP) Dado matrices A M, escalares {λ 1,,λ n } F y una clase de matrices ℵ, buscar una matriz X ℵtal que σ(a + X) ={λ 1,,λ n }. 20
1. Introducción (MIEP) Dado matrices A M, escalares {λ 1,,λ n } F y una clase de matrices ℵ, buscar una matriz X ℵtal que σ(ax) ={λ 1,,λ n }. Hemos podido notar que los casos de (AIEP) y (MIEP) son casos especiales de (PIEP), sólo se tiene que especificar bien las matrices en la clase ℵ. (SIEP) Dado escalares{λ 1,,λ n } F, buscar X ℵque consiste en matrices especialmente estructuradas tal que σ(x) ={λ 1,,λ n }. Se exige que X pertenezca a ℵ, así X tiene estructura definida. El (SIEP) requiere que se resuelva la estructura y el espectro a la vez. Si variamos el problema (SIEP) podemos encontrar algunos sub grupos de (SIEP) que tienen una forma similar al caso (PIEP). La siguiente definición se conoce como un Problema Inverso de Valores Propios, especialmente para el caso de valores reales, más no es necesario obtener la solución exacta. (LSIEP) Dado un conjunto de escalares {λ 1,,λ m } F (m n), buscar una matriz X ℵy un conjunto de índices σ = {σ 1,,σ m }, con 1 σ 1 < <σ m n tal que la función: F (X, σ) = 1 2 m (λ σi (X) λ i ),2 i=1 donde λ i (X), i=1,,n son los valores propios de la matriz X, sea mínima. Nótese que el conjunto de valores propios que se describen tienen cardinal m y pueden ser menor o igual a n. Este problema tiene asociado un problema combinatorio. Obsérvese también que este problema adecuadamente particularizado puede convertirse en el problema PIEP o SIEP. (PDIEP) El problema parcialmente descrito inverso de valores propios es la reconstrucción de un sistema donde sólo se tiene parte del espectro o de los vectores propios. Esto casos se dan por su complejidad, por el tamaño del sistema físico o por que no es razonable el análisis de todo el espectro. (MVIEP) Un problema multivariable inverso de valores propios consiste en buscar escalares reales λ 1,,λ m yvectores reales x R n tal que satisfagan las ecuaciones: Ax = Λx x i = 1 i =1,..., m 21
1.3. Estado del Arte del Problema Inverso de Valores Propios General donde A (n) es una matriz dada definida positiva particionada a bloques A = Λ es la matriz diagonal A 11 A 12 A 1m A 21 A 22 A 2m... A m1 A m2 A mm Λ=diag {λ 1 I [n1],,λ m I [nm]} donde I [ni] es la matriz identidad de tamaño n i y x R n está particionado en bloques con x i R ni. x = [ x T 1,..., x T ] T m En el caso que n i =1tenemos el caso simple de problema simétrico de valores propios. En 1998 Hua Dai (Dai, 1998b), comenta algunos desarrollos de problemas inversos de valores propios parametrizados, los PIVP los asocia a matrices tipo pencil, haciendo un recuento del problema multiplicativo de valores propios con datos reales y complejos. Así mismo analiza las posibles soluciones (específicamente el problema inverso de mínimos cuadrados de valores propios), aplicando el método de Newton. En otro artículo (Dai, 1998a), propone una solución tipo Newton utilizando las descomposición QR con pivotamiento por columnas, verificando la convergencia cuadrática que tienen los algoritmos de esta clase. Además presenta una serie de experiencias secuenciales con matrices tipo pencil. Por último cabe definir también aquí, el Problema Inverso de Valores Singulares que no será abordado en esta tesis: (PISVP) Dado una familia de matrices A(c) R m n, con c =[c 1,,c n ] R n, m n y un conjunto de no negativos números reales {σ 1,,σ n }, buscar un parámetro c tal que los valores singulares de A(c) sean precisamente {σ 1,,σ n }. Nótese que la diferencia entre (PIEP) y (PISVP) es que las matrices que involucran a (PISVP) pueden ser rectangulares. 22
1. Introducción Sobre la resolución de este problema puede encontrarse información en (Chu, 1998; Chen and Chu, 1996; Friedland, 1977, 1975; Boyle and Golub, 1987; Byers, 1988; Downing and Householder, 1956). 1.4. Estado del Arte de los Algoritmos Paralelos del PIVP General Los esfuerzos realizados para diseñar e implementar algoritmos paralelos eficientes que resuelvan Problemas Inversos de Valores Propios son recientes ytodavía escasos. En el año 1999 Badía y Vidal en (Badía and Vidal, 1999; Badía and Vidal, 2000), presentan algunos algoritmos paralelos para solucionar el problema inverso de Toeplitz de valores propios, aportando una linea nueva de investigación en la computación paralela. En 1999 Peinado y Vidal (Peinado and Vidal, 1999), propone una revisión de los métodos de Newton para matrices de Toeplitz, proponiendo nuevos soluciones y algoritmos para este tipo de matrices. En 2001 Alberti y Vidal en (Alberti and Vidal, 2002b), proponen algoritmos paralelos para la solución de Problemas Inversos de Valores Propios paralelos basándose en (Chen and Chu, 1996; Friedland et al., 1987) dando paso a la solución de problemas inverso de valores propios de gran dimensión; se implementan algoritmos secuenciales y paralelos en lenguaje C, con rutinas del álgebra lineal, BLAS, LAPACK, BLACS, PBLAS, SCALAPACK y experimenta con matrices de gran tamaño el método de elevación y proyección. Esta Tesis Doctoral es una continuación de la línea de investigación de la investigación iniciada en estas referencias. 23
1.4. Estado del Arte de los Algoritmos Paralelos del PIVP General 24
Capítulo 2 Entornos Paralelos 2.1. Tipos de Máquinas utilizadas n la sección (2.1.1) se verá la importancia del procesamiento en paralelo. En la E sección (2.1.2), se hará una revisión de la arquitectura computacional y los multicomputadores utilizados; se mostrarán las diferentes máquinas donde se realizaron las experiencias y análisis. Para continuar se verán en la sección (2.1.4), algunos índices de prestaciones utilizados como tiempo de ejecución, ganancia de velocidad, eficiencia, Escalabilidad y los factores que afectan la computación en paralelo. Por último en sección (2.2), se analizarán algunos elementos propios de la computación en paralelo que juegan un importante papel en las prestaciones de los algoritmos implementados. 2.1.1. Motivación En los últimos años, aparecen cada vez más problemas que requieren un alto grado de computación para su resolución. Esto causa la necesidad de fabricar computadores potentes para solucionarlos. Los computadores secuenciales utilizan técnicas como segmentación, o computa- 25
2.1. Tipos de Máquinas utilizadas ción vectorial, para incrementar su productividad. También se aprovechande los avances tecnológicos, que les permiten acelerar su velocidad de cómputo. Sin embargo, un computador avanzado puede tener un precio muy alto pese a sus buenas prestaciones. Con otros computadores menos avanzados de coste inferior pueden obtenerse buenas prestaciones al unirlos conformando un multicomputador. Además, la velocidad de un único computador secuencial siempre vendrá limitada por la tecnología existente. En un multicomputador, es fácil aumentar las prestaciones, aumentando el número de procesadores que lo forman, por encima de las prestaciones de un computador secuencial. Las multicomputadores ofrecen una buena relación calidad/precio, frente a los supercomputadores. Por todo esto surge la necesidad de trabajar en computación en paralelo, para mejorar las prestaciones obtenidas en máquinas secuenciales. Serán más difíciles de programar los algoritmos para computadores paralelos, pero ofrecerán unas mejores prestaciones. Se buscará repartir la carga del problema entre todos los procesadores de que se disponga, para que al estar mejor repartido el problema, se resuelva en menos tiempo. 2.1.2. Arquitectura utilizada En esta tesis utilizaremos multiprocesadores de memoria distribuida. Estos multiprocesadores, son configuraciones basadas en estaciones de trabajo y/o PCs conectados en red. La arquitectura utilizada en esta tesis ha sido la de cluster de PCs. Gráficamente puede observarse en la figura (2.1). Las estaciones de trabajo y los PCs representan en muchos de los casos una filosofía de diseño que resume todos los adelantos tanto tecnológicos como de organización, salvo a veces, el paralelismo explícito. Pero las conexiones actuales entre diferentes computadores permiten velocidades de comunicación que hacen posible pensar en utilizar las estaciones de trabajo y los PCs como nodos individuales de un multicomputador. Las conexiones utilizadas en esta tesis han sido de dos tipos Gigabit Ethernet, y Fast Ethernet que permiten alcanzar buenos anchos de bandas y bajas latencias. Por otra parte los avances producidos en el campo de los entornos de programación paralela han permitido disponer de las herramientas software necesarias para ver un conjunto heterogéneo de máquinas conectadas entre sí como una sola máquina paralela. Con ello se ha dotado a la comunidad científica e industrial de una herramienta que permite, a partir de recursos ya existentes y una pequeña o a 26
2. Entornos Paralelos Bus de memoria Bus de memoria Procesador Cache Memoria... Procesador Cache Memoria Puente Puente Disco Bus de E/S Disco Bus de E/S Circuito interfaz con la red Circuito interfaz con la red Red de interconexión Figura 2.1: Esquema de multiprocesador con memoria distribuida. veces nula inversión, disponer de un multicomputador cuyos nodos son ya deporsí máquinas muy potentes. Por otra parte la popularización del sistema operativo Linux y el desarrollo de entornos de programación paralela han permitido la posibilidad de interconectar de forma sencilla y eficiente PCs disponibles en una institución para construir un computador paralelo con un coste muy bajo (Har). Es decir que nos permita practicar un paralelismo asequible. 2.1.3. Máquinas utilizadas Se dará una breve descripción de las maquinas utilizadas. Se han realizado una serie de experiencias para poder comprobar la latencia y el establecimiento de las comunicaciones y el valor del flops. Para poder resolver el valor del flops se desarrollaron rutinas donde se utilizan librerías de álgebra lineal BLAS 2 y BLAS 3 optimizadas de matriz por matriz y de matriz por vector (Anderson et al., 1995b). Para obtener los tiempos de la latencia y del establecimiento de de las comunicaciones se desarrolló un algoritmo tipo ping-pong 27
2.1. Tipos de Máquinas utilizadas donde se ha ido aumentando el tamaño de problemas. Para poder desarrollar las experiencias, se cuenta con las siguientes máquinas. 2.1.3.1. Red de PCs Esta red de PCs funciona bajo ambiente Linux (Red Hat 6.2) y esta formado por 8 PCs de uso común. Cada Computador está formado por un procesadores Pentium II a 466 MHz y 128 Mbyte de memoria RAM y están interconectados por una Ethernet 10/100Mbyte. El Switch Ethernet es de 8 puertos en los que están conectados 8 procesadores. Hemos comprobado la latencia y el establecimiento de la comunicación de la red Ethernet y los valores que nos han dado son los siguientes: [ ] Mbyte τ =11, 5 seg β = 300 [µseg] 2.1.3.2. Máquina Ramses Figura 2.2: Máquina Ramses. 28
2. Entornos Paralelos Esta red de PCs funciona bajo ambiente Linux (Red Hat 7.1) y esta formado por 12 nodos (IBM XSeries 330SMP), uno de los nodos se utiliza como front end y los once restantes son únicamente de cálculo. Cada nodo está formado por 2 procesadores Pentium III a 866 MHz y 512 Mbyte de memoria RAM y están interconectados por dos redes independientes. El Switch Fast Ethernet es de 24 puertos en los que están conectados 11 procesadores (uno de cada nodo). Hemos comprobado la latencia y el establecimiento de la comunicación en esta red de tipo Fast Ethernet y los valores que nos han dado son los siguientes: [ ] Mbyte τ =11 seg 2.1.3.3. Máquina Kipling β =0,00009 [seg] Figura 2.3: Máquina Kipling. Esta red de PCs funciona bajo ambiente Linux (SUSE 9.0) y esta formado por 2 nodos biprocesadores Xeón a 1,4Ghz., un computador Pentium IV se utiliza como front end; los nodos tienen 512 Mbyte de memoria RAM y están interconectados por un Switch Ethernet. El Switch Ethernet es de 26 puertos en los que están conectados los dos computadores junto con un Front end. 29
2.1. Tipos de Máquinas utilizadas Hemos comprobado la latencia y el establecimiento de la comunicación en esta red de tipo Fast Ethernet y los valores que nos han dado son los siguientes: [ ] Mbyte τ =8,41 seg β =0,00045 [seg] 2.1.3.4. Kefren Figura 2.4: Máquina Kefren. Esta red de PCs funciona bajo ambiente Linux (Red Hat 8.0) y esta formado por 20 nodos biprocesadores Pentium Xeón a 2Ghz son únicamente de cálculo, uno adicional se utiliza como front end. Cada nodo está formado por 1 Gigabyte de memoria RAM; un disco duro IDE de 40GigaByte a 7200rpm; ; con una Interconexión SCSI con una topología de Toro 2D en una matriz de 4x5 nodos. Se ha comprobado la latencia y el establecimiento de la comunicación en esta red de tipo Fast Ethernet y los valores que nos han dado son los siguientes: 30
2. Entornos Paralelos [ ] Mbyte τ =5, 98 seg β =0,0000063 [seg] 2.1.4. Índices de Prestaciones. En esta subsección se presentarán algunos índices de prestaciones utilizados en los algoritmos desarrollados. Se hablará del tiempo de ejecución, el Speed-Up, la eficiencia y la escalabilidad. 2.1.4.1. Tiempo de ejecución El tiempo de ejecución es el índice de prestaciones más intuitivo. En el caso de un programa secuencial, consiste en el tiempo transcurrido desde que se lanza su ejecución hasta que finaliza. Es obvio que nos da una medida de las prestaciones del programa. Un programa será mejor que otro en la medida en que tenga un menor tiempo de ejecución. En el caso de computación en paralelo, este índice se toma como el tiempo invertido desde que el primero de los procesadores ha empezado a ejecutar el programa hasta que el último de los procesadores ha finalizado su ejecución. Normalmente no suele incluirse en el tiempo de ejecución el tiempo empleado en la distribución de los datos y recogida de los resultados. Si se hace de esta manera, los tiempos obtenidos son igualmente válidos para el caso más general en que el programa paralelo es una parte intermedia de un programa mayor, de manera que los datos ya están repartidos al principio, y al final están donde los necesitará el programa para un tratamiento posterior. En el mejor de los casos el tiempo de ejecución de un programa en paralelo en p procesadores será p veces inferior al de su ejecución en un sólo procesador, teniendo todos los procesadores igual potencia de cálculo. Generalmente el tiempo nunca se verá reducido en un orden igual a p, el número de procesadores, ya que hay que contar con una sobrecarga extra que aparece al resolver el problema en varios procesadores, debida a sincronizaciones y dependencias entre ellos. 31
2.1. Tipos de Máquinas utilizadas En los multicomputadores el tiempo dedicado a cálculos y el tiempo de comunicación pueden o no solaparse, dependiendo de si las comunicaciones son asíncronas o no. Es bueno que se solapen comunicaciones y computaciones, porque así el procesador no pierde tiempo esperando enviar datos, tiempo que utiliza para realizar cálculos y acabar antes la computación. Si ambos tiempos no se solapan, el tiempo de ejecución será la suma del tiempo de cálculo más el tiempo de comunicación. Si ambos tiempos se solapan completamente, el tiempo de ejecución será el mayor de ellos. Y si, lo más normal, los tiempos se encuentran en parte solapados y en parte no, el tiempo de ejecución será inferior a la suma de los tiempos de cálculo y comunicación. El tiempo de ejecución de un algoritmo secuencial se representará mediante T s, frente al tiempo de ejecución paralelo utilizando p procesadores T p. 2.1.4.2. Ganancia de velocidad (Speed-Up) El Speed-Up para p procesadores, S p, es el cociente entre el tiempo de ejecución de un programa secuencial (T s ) y el tiempo de ejecución de la versión paralela de dicho programa en p procesadores (T p ). Dado que pueden haber distintas versiones secuenciales, se elige el T s de la versión más rápida. Indica la ganancia de velocidad que se ha obtenido con la ejecución en paralelo. S p = T s T p (2.1) Por ejemplo, un Speed-Up igual a 2 indica que se ha reducido el tiempo a la mitad al ejecutar el programa con varios procesadores. 2.1.4.3. Eficiencia La eficiencia es el cociente entre el Speed-Up y el número de procesadores. E = S p p (2.2) Mide el grado de aprovechamiento de los procesadores para la resolución del problema. 32
2. Entornos Paralelos 2.1.4.4. Escalabilidad En este punto vamos a presentar el concepto de escalabilidad, aunque de manera informal. La escalabilidad es la propiedad que tienen algunos algoritmos de mantener constante la eficiencia al aumentar el número de procesadores, aunque para ello haya que aumentar el tamaño del problema. Dicho en términos vulgares, diremos que un problema es escalable si al aumentar el número de procesadores empleados para resolverlo, el hecho de incrementar el tamaño del problema logra que todos `sigan teniendo trabajo', de forma que se mantenga la eficiencia. La escalabilidad nos responde a la pregunta de si podremos aprovechar la potencia aportada al aumentar el número de procesadores, aunque para ello haya que aumentar el problema. Si un problema no es escalable, aunque aumentemos el número de procesadores, no se conseguirá incrementar ni mantener la eficiencia, con lo que cada vez se irá aprovechando menos la potencia de los procesadores. 2.1.5. Factores que afectan a la Computación en Paralelo La forma de programar en máquinas paralelas es dependiente del tipo de plataforma de que se trate. En cualquiera de ellas, sin embargo, es muy importante maximizar la reutilización de los datos más cercanos al procesador, tener en cuenta la jerarquía de memorias, al igual que se hace en computación secuencial. En multiprocesadores de memoria distribuida, es el programador el que debe modificar los programas para que sigan, por ejemplo, el modelo de programación CSP (Procesos Secuenciales Comunicantes). En este modelo, los programas se ven como programas secuenciales que en algún momento requieren de comunicaciones para obtener datos de los que dependen próximas operaciones, o simplemente por motivos de sincronización. Es fácil aportar unas extensiones dedicadas al paso de mensajes, a los lenguajes de programación secuenciales, de forma que pasan a ser lenguajes de programación paralela. Una ventaja que aporta esta metodología es que los programadores no necesitan aprender un nuevo lenguaje para programar los multiprocesadores, sino que basta con aprender unas nuevas `instrucciones' dedicadas a la comunicación, para poder realizar programas paralelos. 33
2.1. Tipos de Máquinas utilizadas En la computación en paralelo, juegan un papel fundamental las redes de interconexión. Especialmente, enelcasodelosmulticomputadores con memoria distribuida en que aparecen mensajes que pueden ser de longitud variable, características de la red como la latencia (tiempo de establecimiento de la comunicación) o la tasa de transmisión afectan directamente a las prestaciones de los programas paralelos ejecutados en esas máquinas. Por ejemplo, si se tiene una red muy rápida con muy bajo tiempo de latencia y de comunicación, podrán obtenerse buenas prestaciones con algoritmos de grano fino (que realizan pocas operaciones de computación entre operaciones de comunicación). Esto puede aparecer en máquinas masivamente paralelas o en multiprocesadores de memoria compartida. También puede ocurrir la situación en la que el tiempo de latencia sea muy alto, aunque una vez establecida la comunicación, la tasa de envío del mensaje sea rápida. En estos casos, un programa paralelo de grano fino tendrá unas malas prestaciones. Habrá que utilizar programas de grano grueso (muchas operaciones entre comunicaciones, aunque estas comunicaciones sean de más datos). Otro de los factores, muy importante, que afecta a las prestaciones de los programas paralelos es la distribución de los datos. La forma en que los datos estén distribuidos entre los diferentes procesadores, marcará en gran medida las comunicaciones que harán falta durante el programa, y entre qué procesadores. Por lo general, convendrá repartir los datos uniformemente entre todos los procesadores, porque esto suele suponer una distribución equilibrada de la carga. En el caso de grandes matrices, además suelen utilizarse distribuciones cíclicas. Una distribución no cíclica es aquélla en la que se parten las matrices en bloques, y se da un bloque a cada uno de los p procesadores. En la distribución cíclica se parten las matrices en n bloques, siendo n p, y se reparten estos bloques entre los procesadores de forma que a cada uno le corresponden bloques no consecutivos. Con esta distribución puede conseguirse mantener uniforme la carga hasta casi el final de la ejecución del programa. 34