Algoritmos Secuenciales y Paralelos para la
Resolucion del Problema Inverso de Valores
Singulares
Trabajo de Tesis Doctoral
Presentado por Georgina Flores Becerra
Dirigido por Dr. Antonio M. Vidal Macia
Valencia, Espana
Noviembre 2005
Indice general
1. Introduccion 6
1.1. Definicion del Problema Inverso de
Valores Singulares . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.1. Los Problemas Inversos de Valores Propios . . . . . . . . 8
1.1.2. Los Problemas Inversos de Valores Singulares . . . . . . . 10
1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3. Estado del Arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4. Planteamiento del Problema . . . . . . . . . . . . . . . . . . . . . 13
1.5. Resolucion y Casos de Prueba . . . . . . . . . . . . . . . . . . . . 15
1.6. Herramientas Hardware y Software de Entornos Paralelos . . . . 17
1.7. Evaluacion de Algoritmos Paralelos . . . . . . . . . . . . . . . . . 21
1.8. Estructura del trabajo . . . . . . . . . . . . . . . . . . . . . . . . 23
2. Metodos y Algoritmos Secuenciales para la Resolucion del PI-
AVS 24
2.1. Metodo Fuerza Bruta (FB) . . . . . . . . . . . . . . . . . . . . . 26
2.1.1. Algoritmo Fuerza Bruta . . . . . . . . . . . . . . . . . . . 28
2.1.2. Probando Fuerza Bruta . . . . . . . . . . . . . . . . . . . 29
2.2. Metodo I (MI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2.1. Automatizacion del Metodo I . . . . . . . . . . . . . . . . 35
2.2.2. Pruebas Numericas del Metodo I . . . . . . . . . . . . . . 36
2.3. Metodo Elevacion-Proyeccion (EP) . . . . . . . . . . . . . . . . . 40
2.3.1. Algoritmo secuencial Elevacion-Proyeccion . . . . . . . . . 43
2.3.2. Pruebas Numericas de Elevacion-Proyeccion . . . . . . . . 44
2.4. Metodo III (MIII) . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.4.1. Algoritmo Secuencial del Metodo III . . . . . . . . . . . . 53
2.4.2. Pruebas Numericas del Metodo III . . . . . . . . . . . . . 54
3. Implementacion, Analisis y Evaluacion de los Algoritmos del
PIAVS 59
3.1. Detalle de Operaciones de Algoritmos del PIAVS . . . . . . . . . 60
3.2. Algoritmos del PIAVS y Tiempos de Ejecucion Teoricos . . . . . 68
1
3.3. Analisis y Evaluacion de los Algoritmos Secuenciales del PIAVS . 72
3.3.1. Requerimientos de Memoria . . . . . . . . . . . . . . . . . 72
3.3.2. Convergencia . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.3.3. Exactitud de la solucion . . . . . . . . . . . . . . . . . . . 73
3.3.4. Estimacion de la complejidad de tiempo y tiempos de eje-
cucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.3.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . 75
4. Algoritmos Paralelos para la Resolucion del PIAVS 77
4.1. Paralelizacion de Operaciones de Algoritmos del PIAVS . . . . . 78
4.1.1. Paralelizacion de rutinas necesarias para FB . . . . . . . . 79
4.1.2. Paralelizacion de rutinas necesarias para MI . . . . . . . . 81
4.1.3. Paralelizacion de rutinas necesarias para EP . . . . . . . . 82
4.1.4. Paralelizacion de rutinas necesarias para MIII . . . . . . . 83
4.2. Algoritmos Paralelos para el PIAVS y Tiempos de Ejecucion
Teoricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.3. Prestaciones Experimentales de los Algoritmos Paralelos del PIAVS 98
4.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5. Resolucion Paralela del PIEVS 109
5.1. Resoluciones Generales del PIEVS . . . . . . . . . . . . . . . . . 110
5.2. Propuestas de Resoluciones Especıficas del PIEVS . . . . . . . . 115
5.3. Paralelizacion de Resoluciones Especıficas del PIEVS . . . . . . . 123
5.4. Prestaciones de Resoluciones Paralelas del PIEVS . . . . . . . . . 132
5.5. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
6. Algoritmos para la Resolucion del PIVSVP 139
6.1. Metodo MTriIU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.1.1. Algoritmo Secuencial del Metodo MTriIU . . . . . . . . . 143
6.1.2. Paralelizacion del Algoritmo MTriIU . . . . . . . . . . . . 145
6.1.3. Analisis de Prestaciones e Implementaciones del Algorit-
mo Paralelo MTriIU . . . . . . . . . . . . . . . . . . . . . 149
6.2. Metodo MBidiag . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.2.1. Algoritmo MBidiag y Experimentos Numericos . . . . . . 158
6.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
7. Conclusiones y Perspectivas 165
2
Indice de tablas
2.1. Puntos iniciales del caso ChuBai . . . . . . . . . . . . . . . . . . 25
2.2. Resultados esperados del caso ChuBai . . . . . . . . . . . . . . . 25
2.3. Dimensiones de F y J del algoritmo FB . . . . . . . . . . . . . . 29
2.4. Requerimiento de memoria del algoritmo FB . . . . . . . . . . . 29
2.5. Resultados y convergencia del caso ChuBai con FB . . . . . . . . 30
2.6. Errores del caso ChuBai con FB . . . . . . . . . . . . . . . . . . 31
2.7. Resultados del caso Gral con FB . . . . . . . . . . . . . . . . . . 32
2.8. Requerimiento de memoria de algoritmo MI . . . . . . . . . . . . 36
2.9. Resultados del caso ChuBai con MI . . . . . . . . . . . . . . . . . 37
2.10. Errores del caso ChuBai con MI . . . . . . . . . . . . . . . . . . . 37
2.11. Resultados y convergencia del caso Gral con MI . . . . . . . . . . 39
2.12. Requerimiento de memoria de EP . . . . . . . . . . . . . . . . . . 44
2.13. Resultados del caso ChuBai con EP . . . . . . . . . . . . . . . . 45
2.14. Errores del caso ChuBai con EP . . . . . . . . . . . . . . . . . . 45
2.15. Resultados del caso Gral con EP . . . . . . . . . . . . . . . . . . 47
2.16. Convergencia de EP para el caso Gral . . . . . . . . . . . . . . . 48
2.17. Requerimiento de memoria de MIII . . . . . . . . . . . . . . . . . 54
2.18. Resultados del caso ChuBai con MIII . . . . . . . . . . . . . . . . 55
2.19. Errores de ChuBai con MIII . . . . . . . . . . . . . . . . . . . . . 55
2.20. Resultados del caso Gral con MIII . . . . . . . . . . . . . . . . . 57
2.21. Convergencia de MIII para el caso Gral . . . . . . . . . . . . . . 58
4.1. Tiempos de Ejecucion Teoricos de FB en Kefren . . . . . . . . . 97
4.2. Tiempos de Ejecucion Teoricos de MI en Kefren . . . . . . . . . . 97
4.3. Tiempos de Ejecucion Teoricos de EP en Kefren . . . . . . . . . 97
4.4. Tiempos de Ejecucion Teoricos de MIII en Kefren . . . . . . . . . 98
4.5. Tiempos de Ejecucion Experimentales de FB . . . . . . . . . . . 99
4.6. Tiempos de Ejecucion Experimentales de MI . . . . . . . . . . . 99
4.7. Tiempos de Ejecucion Experimentales de EP . . . . . . . . . . . 100
4.8. Tiempos de Ejecucion Experimentales de MIII . . . . . . . . . . 100
4.9. Eficiencia Experimental de FB . . . . . . . . . . . . . . . . . . . 103
4.10. Eficiencia Experimental de MI . . . . . . . . . . . . . . . . . . . 104
3
4.11. Eficiencia Experimental de EP . . . . . . . . . . . . . . . . . . . 104
4.12. Eficiencia Experimental de MIII . . . . . . . . . . . . . . . . . . 104
5.1. Tiempos de ejecucion experimentales de MI y EP para el PIEVS 114
5.2. Tiempos de ejecucion experimentales de MIE y EPE para el PIEVS121
5.3. Tiempos de ejecucion experimentales de dos implementaciones
paralelas de la svd . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.4. Tiempos de ejecucion y Speedup experimentales de MIE paralelo 134
5.5. Tiempos de ejecucion y Speedup experimentales de EPE paralelo 135
5.6. Eficiencia Experimental de MIE . . . . . . . . . . . . . . . . . . . 136
5.7. Eficiencia Experimental de EPE . . . . . . . . . . . . . . . . . . 136
6.1. Resultados del caso Triu con MTriIU . . . . . . . . . . . . . . . . 145
6.2. Tiempos de Ejecucion Experimentales de MTriIU en Kefren, con-
struyendo A en Proc0 . . . . . . . . . . . . . . . . . . . . . . . . 150
6.3. Tiempos de Ejecucion Experimentales de MTriIU en Kefren, SIN
construır A en Proc0 . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.4. Speedup experimental de MTriIU en Kefren, sin construir A en
Proc0, multiplicando el numero de procesadores por 2 y por 4 . . 151
6.5. Tiempos de Ejecucion Experimentales de MTriIU en Aldebaran,
bajo el modelo de Memoria Compartida . . . . . . . . . . . . . . 154
6.6. Eficiencia Experimental de MTriIU en Aldebaran. Modelo de
Memoria Compartida . . . . . . . . . . . . . . . . . . . . . . . . 155
6.7. Resultados del caso Bidiag con MBidiag, para n = {4, 10, 25, 50, 100},con c
(0)i = c∗i + δ (i = 1, n) . . . . . . . . . . . . . . . . . . . . . 160
6.8. Resultados del caso Bidiag con MBidiag, para n = {150, 200, 400, 500, 1000},con c
(0)i = c∗i + δ (i = 1, n) . . . . . . . . . . . . . . . . . . . . . 161
6.9. Metodos de Chu v.s. Li-Mathias v.s. MBidiag . . . . . . . . . . 162
4
Indice de figuras
4.1. Tiempos de ejecucion teoricos vs. experimentales de FB . . . . . 101
4.2. Tiempos de ejecucion teoricos vs. experimentales de MI . . . . . 101
4.3. Tiempos de ejecucion teoricos vs. experimentales de EP . . . . . 101
4.4. Tiempos de ejecucion teoricos vs. experimentales de MIII . . . . 102
4.5. Speedup experimental de FB y MI para m = {1000, 2000, 3000} . 102
4.6. Speedup experimental de EP y MIII para m = {1000, 2000, 3000} 103
4.7. SpeedUp Escalado de los algoritmos paralelos del PIAVS . . . . . 105
5.1. Tiempos de ejecucion experimentales con algoritmos PIAVS vs
PIEVS sobre los mismos casis de prueba . . . . . . . . . . . . . . 122
5.2. Speedup experimentales de MIE y EPE en el cluster Kefren . . . 136
5.3. Speedup Escalado de los algoritmos paralelos del PIEVS . . . . . 137
6.1. Speedup experimental de MTriIU en Kefren, SIN construir A en
Proc0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.2. Speedup experimentales de MTriIU en Aldebaran. Modelo de
Memoria Compartida . . . . . . . . . . . . . . . . . . . . . . . . 154
6.3. Speedup Escalado de MTriIU en Aldebaran. Memoria Compartida155
5
Capıtulo 1
Introduccion
El proposito de coleccionar datos es obtener informacion significativa acerca
de un sistema o fenomeno fısico. Si dada cierta informacion sobre los valores
de un conjunto de parametros, tratamos de utilizar relaciones teoricas para
obtener informacion sobre los valores de algunas cantidades que pueden medirse,
se estara resolviendo, por definicion, un problema directo. En cambio, si dada
cierta informacion sobre los valores de algunas cantidades medidas, se utilizan
relaciones teoricas para obtener informacion de los valores del conjunto de pa-
rametros, entonces se estara resolviendo un problema inverso [TV82].
En un problema directo los valores de los parametros son los datos y los
valores de algunas cantidades observables son las incognitas. Mientras que en un
problema inverso los datos son el resultado de algunas medidas y las incognitas
son los valores de los parametros. En otras palabras, se puede decir que un
problema inverso es aquel en el que se mide un efecto y se quiere determinar la
causa [TF03].
Los problemas directos pueden describirse como sigue [Gro99]
Entrada→ Proceso→ Salida
o bien como
Causa→Modelo→ Efecto
Si x simboliza la entrada y K el proceso, entonces el problema directo es encon-
trar Kx:
Entrada Proceso Salida
x → K → ?
Causa Modelo Efecto
6
Bajo este esquema, cada problema directo sugiere dos problemas inversos in-
mediatos: uno denominado problema de causalidad y otro denominado problema
de identificacion de modelo.
En el problema de causalidad, dado un modelo K y un efecto y, hay que
encontrar la causa del efecto:
Entrada Proceso Salida
? → K → y
Causa Modelo Efecto
mientras que en el problema de identificacion del modelo, dada informacion de
causas-efectos, hay que identificar el modelo [Gro99]:
Entrada Proceso Salida
x → ? → y
Causa Modelo Efecto
Los problemas directos se caracterizan por tener solucion unica y estable,
no ası los problemas inversos cuya solucion puede no existir, puede ser unica o
pueden ser multiples.
De acuerdo a [Gro99] los diferentes tipos de problemas inversos y sus apli-
caciones son:
Problemas Inversos en Calculo. El calculo es particularmente
una fuente rica en problemas inversos. No es de sorprender si pen-
samos en la relacion inversa que existe entre la diferenciacion y la
integracion. Problemas como calculo de trayectorias, determinacion
de la deformacion y distribucion de masas, distribucion y balanceo de
fuerzas, la mecanica orbital y la mecanica celeste son buenos repre-
sentantes de los Problemas Inversos en Calculo. Para su resolucion
se emplean metodos de aproximacion basados en la discretizacion de
derivadas e integrales, ademas de herramientas como la geometrıa
analıtica.
Problemas Inversos en Ecuaciones Diferenciales. Muchos de
los problemas en ciencia y tecnologıa estan vinculados con ecuaciones
diferenciales. Ejemplares de este tipo de problemas son los relaciona-
dos con: hidraulica, teorıa de irrigacion, conduccion de calor y sis-
temas dinamicos. Para atacar este tipo de problemas se emplean he-
rramientas matematicas como metodos de resolucion de ecuaciones
7
diferenciales, transformada de Laplace, metodos de diferencias fini-
tas y elementos finitos.
Problemas Inversos en Algebra Lineal. El problema basico
del algebra lineal, la resolucion de un sistema de ecuaciones linea-
les, es un problema inverso. Ademas de los problemas basicos, se
cuentan los relacionados con: tomografıa, gravimetrıa, estereografıa,
geofısica, astronomıa. Los topicos matematicos empleados incluyen
proyecciones en hiperplanos, integracion multiple, transformada de
Laplace, matrices inversas, resolucion de mınimos cuadrados y anali-
sis de valores y vectores propios.
De acuerdo a que elementos se identifican como incognitas de un problema
inverso, estos se clasifican en dos grandes bloques [Gra98]:
Problemas inversos para estimar parametros. Tratan de la
determinacion de los valores de los parametros de un modelo que
permitan el mejor ajuste entre los resultados del modelo y los datos
medidos [Giu02].
Problemas inversos para estimar funciones. Involucran la de-
terminacion de una funcion desconocida.
Dentro de los problemas inversos para la estimacion de parametros, se en-
cuentran clasificados, entre otros: los Problemas Inversos de Valores Propios
(PIVP) y los Problemas Inversos de Valores Singulares (PIVS).
1.1. Definicion del Problema Inverso de
Valores Singulares
Antes de definir el Problema Inverso de Valores Singulares, se define el Pro-
blema Inverso de Valores Propios, como importante y principal antecedente.
1.1.1. Los Problemas Inversos de Valores Propios
Este tipo de problemas tiene como proposito la construccion de una matriz
con una determinada estructura que posea cierto espectro predefinido. Se definen
como sigue [Chu98]:
Dada una familia de matrices A(c) ∈ Ψ, con c = [c1, c2, · · · , cl]t ∈ F l
y escalares {λ∗1, λ
∗2, · · · , λ∗
n} ⊂ F , encontrar un parametro c tal que
σ(A(c)) = {λ∗1, λ
∗2, · · · , λ∗
n} donde:
8
F representa el campo escalar de los reales < o de los com-
plejos C
σ(A) denota el espectro de la matriz A
Ψ denota cierto conjunto de matrices cuadradas, que entre
otras, pueden ser:
S(n) el conjunto de todas las matrices simetricas
en <n×n
O(n) el conjunto de todas las matrices ortogo-
nales en <n×n
DR(n) el conjunto de todas las matrices diagonales
en <n×n
H(n) el conjunto de todas las matrices Hermi-
tianas en Cn×n
DC(n) el conjunto de todas las matrices diagonales
en Cn×n
En [Chu98] se puede encontrar una clasificacion de estos problemas inversos,
entre ellos se especifican:
MVIEP. Problema Inverso Multivariable de Valores Propios
LSIEP. Problema Inverso de Mınimos Cuadrados de Valores Propios
PIEP. Problema Inverso Parametrizado de Valores Propios
SIEP. Problema Inverso Estructurado de Valores Propios
PDIEP. Problema Inverso Parametrizado de Valores Propios
AIEP. Problema Inverso Aditivo de Valores Propios
MIEP. Problema Inverso Multiplicativo de Valores Propios
de los cuales son de particular interes en este trabajo el LSIEP o caso simetrico
aditivo [VA01] [VA02] y el MIEP o caso simetrico multiplicativo [FVA02], que
se definen como:
LSIEP. Caso Aditivo Simetrico.
Dado un conjunto de escalares λ∗1, λ
∗2, ..., λ
∗m ⊂ < encon-
trar una matriz
X ∈{
A(c) = A0 +
l∑
i=1
ciAi|Ai ∈ S(n), i = 0, l
}
y un conjunto τ = {τ1, τ2, ..., τm}de ındices, con 1 ≤ τ1 <
τ2 < · · · < τm ≤ n, tales que la funcion
F (X, τ) =1
2
m∑
i=1
(λτi(X)− λ∗
i )2
donde λi(X), i = 1, n, son valores propios de la matriz X ,
sea minimizada.
9
MIEP. Caso Multiplicativo Simetrico.
Dada una matriz simetrica y definida positiva A ∈ <n×n y
escalares reales λ∗1 ≤ λ∗
2 ≤ · · · ≤ λ∗n, encontrar c ∈ <n tal
que los valores propios reales λ1(c) ≤ λ2(c) ≤ · · · ≤ λn(c)
de la matriz DA, con D = diag(d1, d2, · · · , dn), satisfagan
λi(d) = λ∗i , para i = 1, n
1.1.2. Los Problemas Inversos de Valores Singulares
Al igual que los problemas inversos de valores propios, los de valores sin-
gulares consisten en construir una matriz que mantenga ciertas caracterısticas
especıficas de estructura, ası como un subconjunto de valores singulares dados.
Una definicion general de este tipo de problemas es:
Dada una familia de matrices A(c) ∈ <m×n (m ≥ n), con c =
[c1, c2, ..., cl]t ∈ <l y escalares {S∗
1 , S∗2 , · · · , S∗
n} ⊂ <, encontrar un
parametro c tal que los valores singulares de (A(c)) sean S∗1 , S∗
2 , ..., S∗n.
Esta definicion tambien puede particulalizarse para los casos aditivo y mul-
tiplicativo como sigue:
Definicion del Problema Inverso de Valores Singulares: Caso Aditi-
vo [Chu92a].
Dado un conjunto de matrices A0, A1, ..., Al ∈ <m×n (m ≥n) y un conjunto de numeros reales Σ∗ = {S∗
1 , S∗2 , ..., S∗
n},con S∗
1 > S∗2 > · · · > S∗
n, encontrar el conjunto de numeros
reales c = {c1, c2, ..., cl}, tal que los valores singulares de
A(c) = A0 + c1A1 + · · ·+ clAl sean los elementos de Σ∗.
Definicion del Problema Inverso de Valores Singulares: Caso Multi-
plicativo.
Dada una matriz A ∈ <m×n (m ≥ n), y un conjunto de
numeros reales Σ∗ = {S∗1 , S∗
2 , ..., S∗n}, con S∗
1 > S∗2 > · · · >
S∗n, encontrar una matriz M tal que los valores singulares
de MA sean los elementos de Σ∗.
Este problema se considera resuelto en el caso en que A
es cuadrada e invertible si se toma
M = diag(S∗1 , S∗
2 , ..., S∗n)QAS−1
A P tA,
donde A = PASAQtA es la descomposicion en valores sin-
gulares de A.
10
1.2. Objetivos
En este trabajo se tiene por objetivo general disenar, implementar y evaluar
algoritmos secuenciales y paralelos para resolver eficientemente el Problema In-
verso de Valores Singulares. Para alcanzar este objetivo, se definen los siguientes
objetivos particulares:
F Disenar algoritmos secuenciales que implementen los metodos
que resuelven el PIVS reportados en la literatura.
F De los metodos que resuelven el PIVP, seleccionar aquellos
adaptables a la resolucion del PIVS, disenando los correspon-
dientes algoritmos secuenciales.
F Analizar y evaluar los diversos algoritmos que resuelven el PIVS,
de acuerdo a diversos parametros como: tiempos de ejecucion,
requerimientos de almacenamiento, convergencia y exactitud,
con el fin de determinar el o los algoritmos que reunan las ca-
racterısticas deseables de eficiencia, robustez y exactitud.
F Paralelizar los algoritmos secuenciales coleccionados para re-
solver casos del PIVS de tamanos equiparables a los requeridos
en aplicaciones de la ciencia y la ingenierıa.
F Analizar y evaluar las prestaciones y escalabilidad de los algo-
ritmos paralelos implementados para seleccionar el o los algo-
ritmos con mejores caracterısticas para la resolucion del PIVS.
F Optimizar los algoritmos secuenciales y paralelos para resolver
particularizaciones del PIVS, a traves de la explotacion de ca-
racterısticas estructurales de las matrices.
F Estudiar y analizar metodos para la resolucion simultanea del
PIVS y del PIVP.
1.3. Estado del Arte
Gran parte de los resultados existentes hasta ahora para la resolucion del
PIVS se deben a Moody T. Chu. En 1992 propone e implementa un par de meto-
dos numericos, uno discreto y otro continuo, para la resolucion de PIVS [Chu92a].
En el metodo continuo Chu trata al PIVS como un problema de optimizacion
para minimizar distancias y plantea que puede derivarse una ecuacion diferen-
cial ordinaria para caracterizar un paso de flujo descendente para la funcion de
distancia. El metodo discreto se basa en el denominado Method III que Friedland
et. al. [FNO87] proponen para el PIVP y que Chu adapta para la resolucion del
PIVS.
11
En 1996 Chu y Chen formulan dos tipos de problemas de mınimos cuadra-
dos equivalentes entre sı y proponen una resolucion para el PIVP llamada
Lift&Project [CC96], que se basa en el Metodo de Proyeccion Alternativa.
Nuevamente Chu, en 1999, introduce un metodo para la construccion de
matrices con valores singulares y elementos de la diagonal prescritos [Chu99].
Considera que el teorema de Schur-Horn caracteriza la relacion entre entradas
diagonales y valores propios de matrices Hermitianas; de la misma forma el
teorema de Sing-Thompson caracteriza la relacion entre entradas diagonales y
valores singulares de matrices arbitrarias. Basado en el principio de induccion
construye numericamente esta matriz con un algoritmo recursivo, siempre que
los valores singulares dados y elementos diagonales satisfagan las condiciones
Sing-Thompson.
Posteriormente, en 2000, Chu propone un algoritmo recursivo que no solo
considera la construccion de matrices con valores singulares prescritos, sino tam-
bien con valores propios prescritos [Chu00]. Para ello utiliza el teorema Weyl-
Horn que caracteriza la relacion entre valores propios y valores singulares de
una matriz arbitraria. Basado en esta caracterizacion desarrolla un algoritmo
recursivo para construir numericamente una matriz con los valores propios y
singulares deseados.
En el mismo tenor, se puede encontrar un metodo planteado por Kosowski
y Smoktunowicz [KA00] en 2000, para construir una matriz triangular inferior
unidad con valores singulares prestablecidos. Tambien Li y Mathias [LM01], en
2001, establecen condiciones para la existencia de una matriz compleja n × n,
con n valores singulares deseados y m ≤ n valores propios deseados y disenan
un algoritmo para generar tal matriz, pudiendo elegir el orden en que los valores
propios aparezcan en la diagonal.
Un trabajo reciente es el de Politi [Pol03] en 2003, quien considera la resolu-
cion de un problema inverso de valores singulares introduciendo la descomposi-
cion de una matriz cuadrada real A = PSQt, con P , Q matrices cuadradas reales
ortogonales, con respecto a un producto interno particular definido a traves
de una matriz real diagonal G, de orden n, que tiene sus elementos iguales
a +1,−1, y S es matriz diagonal real con elementos no negativos llamados
valores G − singulares. Cuando G es la identidad, esta descomposicion es la
descomposicion en valores singulares usual y S es la matriz diagonal de valores
singulares. Ası, dado un conjunto S1, S2, · · · , Sn de n numeros reales positivos
se considera el problema de encontrar una matriz real A que los tenga como
valores G− singulares.
En la mayorıa de los trabajos de investigacion mencionados se reportan
experimentos numericos con problemas de tamano paqueno, por ejemplo, m = 5
y n = 4 en [Chu92a] y [BMX03], m = n = 50 en [KA00], por lo tanto
es necesario observar el comportamiento de los algoritmos para problemas de
12
mayor tamano. Por otra parte, no se reportan en la literatura aproximaciones
paralelas a la resolucion del Problema Inverso de Valores Singulares, teniendo
en este rubro un campo abierto de investigacion.
1.4. Planteamiento del Problema
De acuerdo a los objetivos planteados en este trabajo, los problemas inversos
de valores singulares que se abordan son:
Problema Inverso Aditivo de Valores Singulares (PIAVS).
Dado un conjunto de matrices A0, A1, ..., An ∈ <m×n (m ≥ n) y un
conjunto de numeros reales Σ∗ = {S∗1 , S∗
2 , ..., S∗n}, tales que S∗
1 >
S∗2 > ... > S∗
n > 0, este problema consiste en encontrar un vector de
numeros reales c = [c1, c2, ..., cn]t, tal que los valores singulares de
A(c) = A0 + c1A1 + · · ·+ cnAn sean los elementos de Σ∗.
El PIAVS se caracteriza por tener mas de una solucion, es decir,
pueden existir cX y cY tales que los valores singulares de A(cX ) y
A(cY ) sean Σ∗. Por ejemplo, suponer m = n = 3, con
A0 A1 = e1et1 A2 = e2e
t2 A3 = e3e
t3
2
6
4
1 3 5
2 1 3
4 2 1
3
7
5
2
6
4
1 0 0
0 0 0
0 0 0
3
7
5
2
6
4
0 0 0
0 1 0
0 0 0
3
7
5
2
6
4
0 0 0
0 0 0
0 0 1
3
7
5,
existen cX = [3, 2, 1]t y cY = [1, 2, 3]t tales que los valores singulares
de A(cX) y A(cY ) son Σ∗ ={9.5, 1.8, 0.9}. Denotaremos con c∗ a
una de las soluciones del PIAVS, es decir al vector de numeros reales
c∗ = [c∗1, c∗2, ..., c
∗n]t, tal que los valores singulares de A(c∗) son Σ∗.
Tıpicamente el PIAVS se resuelve con aproximaciones calculadas por
metodos iterativos, por lo que se denota con c(0) la aproximacion ini-
cial.
Problema Inverso Estructurado de Valores Singulares (PIEVS).
Dado un conjunto de numeros reales Σ∗ = {S∗1 , S∗
2 , ..., S∗n}, tales que
S∗1 > S∗
2 > ... > S∗n > 0, el problema es construir una matriz tipo
Toeplitz T ∈ <n×n cuyos valores singulares sean Σ∗, es decir:
T =
t0 t−1 ... t−(n−2) t−(n−1)
t1 t0 ... t−(n−3) t−(n−2)
......
. . ....
...
t(n−2) t(n−1) ... t0 t−1
t(n−1) t(n−2) ... t1 t0
= Udiag(S∗1 , S∗
2 , ..., S∗n)V t,
13
donde U y V son vectores singulares de T correspondientes a Σ∗.
Una matriz tipo Toeplitz puede representarse unicamente con su
primera columna y su primer renglon; ası, la matriz T anterior se
puede expresar en una notacion simplificada como:
T = toep(primer vector columna de T, primer vector renglon de T ) =
= toep([t0, t1, ..., t(n−2), t(n−1)], [t0, t−1, ..., t−(n−2), t−(n−1)]) =
= Udiag(S∗1 , S∗
2 , ..., S∗n)V t.
Si a partir de T se define T como
T = toep([1, t1, ..., t(n−2), t(n−1)], [1, t−1, t−2, ..., t−(n−2), t−(n−1)]) =
= Udiag([S∗1 , S∗
1 , ..., S∗n])V t,
donde
ti = ti/t0, para i = −(n− 1), ..., 0, ..., n− 1
y
S∗i = S∗
i /t0, para i = 1, n,
T se puede reescribir como
T = In+t1toep(e2, 0tn)+...+t(n−2)toep(en−1, 0
tn)+t(n−1)toep(en, 0t
n)+
+ t−1toep(0n, et2) + t−2toep(0n, et
3) + ...+
+ t−(n−2)toep(0n, etn−1) + t−(n−1)toep(0n, et
n),
donde ei es el i-esimo vector canonico y 0n es un vector columna
de n ceros. El problema de calcular los 2n − 1 elementos de T , de
modo que T tenga los n valores singulares deseados S∗i (i = 1, n),
implica asignar libremente valores a n − 1 elementos, tomando los
n elementos restantes como las incognitas de un PIAVS. Si las n
incognitas representan las n diagonales de T , el Problema Inverso
Estructurado de Valores Singulares siguiente:
toep([1, 0, ..., t(n/2)+1, ..., t(n−1)], [1, 0, ..., t−((n/2)+1), ..., t−(n−1)])+
t1toep(e2, 0tn) + ... + tn/2toep(e(n/2)+1, 0
tn)+
t−1toep(0n, et2) + ... + t−(n/2)toep(0n, et
(n/2)+1) =
= Udiag(S∗1 , S∗
2 , ..., S∗n)V t
queda representado como un Problema Inverso Aditivo de Valores
Singulares donde A0 = toep([1, 0, ..., t(n−1)], [1, 0, ..., t−(n−1)]), A1 =
toep(e2, 0tn),..., An/2 = toep(e(n/2)+1, 0
tn), A(n/2)+1 = toep(0n, et
2),...,
An = toep(0n, et(n/2)+1) y c = [t1, ..., tn/2, t−1, ..., t−(n/2)]. Al poder
14
expresar al PIEVS como un PIAVS, el PIEVS puede tener mas de
una solucion y c∗ denota una de ellas.
Problema Inverso de Valores Singulares y Valores Propios
(PIVSVP). Dados el conjunto de numeros reales positivos Σ∗ =
{S∗1 , S∗
2 , ..., S∗n} y el conjunto de numeros reales Λ∗ = {L∗
1, L∗2, ..., L
∗n},
tales que S∗1 > S∗
2 > ... > S∗n, |L∗
1| > |L∗2| > ... > |L∗
n| y que cumplen
las condiciones Weyl-Horn:
k∏
j=1
|L∗j | ≤
k∏
j=1
S∗j para k = 1, n− 1
n∏
j=1
|L∗j | =
n∏
j=1
S∗j ,
el PIVSVP consiste en construir una matriz de tamano n × n que
posea tanto los valores singulares Σ∗ como los valores propios Λ∗.
1.5. Resolucion y Casos de Prueba
Habiendo definido los problemas a abordar, a continuacion se hace una breve
mencion de los metodos que los resuelven, los cuales se analizan, disenan e im-
plementan secuencial y paralelamente en este trabajo y cuyo estudio se reporta
a lo largo de este documento.
Fuerza Bruta (FB). La forma mas simple de expresar el PIAVS
es como un sistema de ecuaciones no lineales de la forma F (z) = 0
que se construye directamente de la definicion del PIAVS y que se
resuelve con el metodo de Newton. Esta forma de abordar el PIAVS
es una aportacion de este trabajo [FBGV05].
Metodo I (MI). Del conjunto de cuatro metodos llamados Method
I, Method II, Method III, Method IV para la resolucion del PIVP [FNO87],
en este trabajo se adapta el Method I para la resolucion del PI-
AVS [CCFV05], que es un metodo tipo Newton.
Metodo III (MIII). Este es el metodo discreto dado por Chu en
[Chu92a], adaptacion del Method III [FNO87]. Tambien es un meto-
do tipo Newton para la resolucion del PIAVS.
Elevacion-Proyeccion (EP). Este metodo [FBVM03] es una adaptacion
del metodo Lift&Project [CC96]. Se basa en el planteamiento del PI-
AVS como un problema de mınimos cuadrados. Esta adaptacion es
15
un aporte de este trabajo.
Metodo para la construccion de una matriz triangular in-
ferior unidad (MTriIU). Tambien se estudia este metodo presen-
tado en [KA00] que construye una matriz triangular inferior unidad
con valores singulares prestablecidos que cumplen las condiciones de
Weyl, resolviendo ası un caso particular del PIVSVP.
Metodo para la construccion de una matriz bidiagonal (MBi-
diag). Este metodo es un aporte de este trabajo de tesis, consiste
en la construccion de una matriz bidiagonal, con valores singulares
y valores propios prestablecidos que satisfacen las condiciones de
Weyl-Horn. Este es un metodo alternativo a los presentados por
Chu en [Chu00] y Li y Mathias en [LM01], que construyen matrices
cuasitriangular superior y triangular inferior, respectivamente.
Todos los metodos planteados para la resolucion del PIAVS tambien resuel-
ven el PIEVS.
La experimentacion con estos metodos se realiza utilizando los siguientes
casos de prueba:
Casos
No estructurados
Chu y Bai (ChuBai)
General (Gral)
Diagonal (Diag)
Estructurados
Toeplitz Triangular Inferior (ToepTril)
Toeplitz General (ToepGral)
Triangular Inferior Unidad (TrilU)
Bidiagonal (Bidiag)
Caso ChuBai. El caso Chu es un conjunto de pruebas del PIAVS
dadas en [Chu92a] que consideran 6 matrices, A0, A1, ..., A5, de
tamano 5 × 4 (m = 5, n = 4), tres conjuntos de valores singulares
prescritos Σ∗A, Σ∗
B , Σ∗C , con sus correspondientes soluciones c∗A, c∗B ,
c∗C y puntos iniciales c(o)A , c
(o)B y c
(o)C . El caso Bai tambien es un con-
junto de tres pruebas del PIAVS (A, B, C), con m = 5 matrices de
tamano m× n = 5× 4, que se pueden encontrar en [BMX03].
Caso Gral. Con el fin de probar los metodos del PIAVS para casos
aleatorios, se considera que las matrices A0, A1, ..., An no tienen es-
tructura ni valores particulares.
16
Caso Diag. Para probar los metodos del PIAVS con tamanos su-
ficientemente grandes, se utilizan las matrices A0 aleatoria sin es-
tructura y Ai = eieti (i = 1, n); en este caso basta con almacenar
explıcitamente solo la matriz A0, disminuyendo sustancialmente el
almacenamiento requerido, pudiendo incrementar los valores de m y
n.
Caso ToepGral. De una matriz aleatoria tipo Toeplitz se generan
las matrices Ai (i = 0, n) para las pruebas de los metodos del PIEVS.
Caso ToepTril. Para probar los metodos en un caso particular del
PIEVS, a partir de una matriz aleatoria tipo Toeplitz triangular in-
ferior, se determinan las matrices Ai (i = 0, n).
Caso TrilU. Este es un caso de prueba del PIVSVP donde no es
necesario determinar las matrices Ai (i = 0, n), basta con especificar
los valores singulares deseados Σ∗, que satisfagan las condiciones de
Weyl, para probar la construccion de una matriz triangular inferior
unidad que posea tales valores.
Caso Bidiag. Otro caso de prueba del PIVSVP es el que requiere
de la especificacion de valores singulares y valores propios prestable-
cidos que satisfagan las condiciones de Weyl y Horn, con los cuales
probar el algoritmo que construye una matriz bidiagonal que posea
tales valores singulares y valores propios.
1.6. Herramientas Hardware y Software de En-
tornos Paralelos
La implementacion secuencial y paralela de los algoritmos para el estudio y
observacion experimental de los metodos que resuelven en PIVS se ha llevado a
cabo dentro del entorno de programacion que se describe en esta seccion.
Los problemas que requieren un alto grado de computo para su resolucion,
como es el caso del PIVS (lo que se constatara en a lo largo de este traba-
jo), requieren ası mismo de potentes entornos de programacion que garanticen
una resolucion eficiente. Entornos de programacion secuencial pueden ofrecer
estas garantıas siempre que se cuente con los recursos suficientes para acceder
a computadores de alta productividad que incorporen los ultimos avances tec-
nologicos. Sin embargo, siempre se encontrara una limitacion fısica que impida
obtener mayor beneficio.
17
El entorno de programacion alternativo es el que integra computadoras de
bajo costo unidos en un multicomprocesador. Con este tipo de entornos se logran
resoluciones eficientes sin el problema de las limitaciones fısicas ni de los altos
costos de un supercomputador secuencial, al tener la posibilidad de aumentar
el numero de procesadores que se integran en el multicomprocesador.
En este trabajo se han utilizado esencialmente multiprocesadores de memoria
distribuida, cuyos componentes son PCs o estaciones de trabajo conectadas
mediante una red de interconexion de paso de mensajes. Tambien se ha podido
contar con el uso de una multicomputadora de memoria compartida distribuida.
El uso de ambos tipos de sistemas ha dado la posibilidad de disenar algoritmos
donde el control de la distribucion y manipulacion de los datos es manejada
por el programador, utilizando mecanismos de paso de mensajes; y tambien se
han podido disenar algoritmos donde este control se realiza mediante el uso
de directivas, como las ofrecidas por OpenMP. Una breve descripicion de los
clusters utilizados se da enseguida.
Cluster Kubrick. Este cluster de memoria distribuida esta consti-
tuido de 2 nodos biprocesadores Intel Xeon, a 2.2 GHz y 4 Gbytes
de RAM. Los nodos estan interconectados con una red Ethexpress.
Trabaja bajo plataforma LINUX (Red Hat 8).
Cluster Kefren. Kefren es otro cluster de memoria distribuida que
trabaja bajo el ambiente LINUX (Red Hat 8), consta de 20 nodos
biprocesadores Pentium Xeon, a 2 GHz y 1 Gbyte de RAM. Los
nodos estan interconectados mediante una red SCI con una topologıa
de Toro 2D en una malla de 4 × 51.
Cluster Aldebaran. Aldebaran es un sistema SGI Altix 3700 de
48 procesadores Intel Itanium 2, a 1.5 GHz y 16 Gbytes de RAM.
Los nodos estan conectados mediante una red de interconexion SGI
NumaLink en una topologıa de hipercubo. Funciona bajo el sistema
operativo LINUX (Ren Hat 7.2) y es considerado un sistema de
memoria compartida distribuida2.
Cluster MareNostrum. Es un cluster JS20, PPC 970 a 2.2 GHz,
dispone de 4564 procesadores POWER y 9 Terabytes de RAM.
Esta basado en una red de interconexion de procesadores Myrinet
y trabaja bajo el sistema operativo LINUX (Suse). MareNostrum
representa el computador mas potente de Europa y esta dentro de
los diez primeros lugares en el Top 500. Al momento de redactar
1http://www.grycap.upv.es2http://www.asic.upv.es
18
este documento, los algoritmos desarrollados en esta tesis se estan
poniendo a punto para la experimentacion en este cluster3.
Para el tipo de hardware utilizado existe software adecuado que explota las
caracterısticas de la arquitectura y permite obtener el maximo rendimiento; por
eso se ha empleado, para los programas codificados en lenguaje de programacion
Fortran90, las siguientes bibliotecas secuenciales:
BLAS (Basic Linear Algebra Subprograms). Coleccion de rutinas
para realizar operaciones basicas a bloques de matrices y vectores
[HDDCH88].
LAPACK (Linear Algebra PACKage). Biblioteca que contiene ruti-
nas para resolver sistemas de ecuaciones lineales, problemas de mıni-
mos cuadrados lineales, problemas de valores propios y problemas de
valores singulares, problemas comunes del algebra lineal [ABB+95].
Tambien se han utilizado las bibliotecas paralelas:
MPI (Message Passing Interface). Es una biblioteca de comunica-
ciones que implementa el mecanismo de paso de mensajes entre
nodos de computo que se comunican mediante una red de inter-
conexion [GLS94] [VP00].
BLACS (Basic Linear Algebra Communication Subprograms). Es
una biblioteca que ofrece rutinas de comunicacion de paso de men-
sajes que aparecen con frecuencia en computos paralelos del algebra
lineal.
PBLAS (Parallel Basic Linear Algebra Subprograms). Es una ver-
sion de BLAS para computadoras de memoria distribuida [CDO+95].
Tanto PBLAS como BLACS proporcionan rutinas necesarias para
el funcionamiento de ScaLAPACK.
ScaLAPACK (Scalable LAPACK). Librerıa disenada para resolver
un conjunto de rutinas LAPACK en multicomputadoras de memoria
distribuida con mecanismos de comunicacion de paso de mensajes.
Asume que las matrices que maneja se descomponen en bloques cıcli-
cos bidimensionales sobre una malla logica de Prc = Pr × Pc proce-
sadores (Pr numero de procesadores renglon, Pc numero de proce-
sadores columna). Por ejemplo, si la malla de procesadores consta
3http://www.bsc.org.es
19
de 2 renglones y 3 columnas (Pr = 2, Pc = 3, Prc = 6), se espera
que una matriz de tamano 9 × 9 y un vector de tamano 9, que se
descomponen en bloques de tamano 2 × 2, queden distribuidos en
la malla de procesadores como sigue [BCC97]:
Pc
0 1 2
a11 a12 a17 a18 a13 a14 a19 a15 a16
a21 a22 a27 a28 a23 a24 a29 a25 a26
0 a51 a52 a57 a58 a53 a54 a59 a55 a56
a61 a62 a67 a68 a63 a64 a69 a65 a66
Pr a91 a92 a97 a98 a93 a94 a99 a95 a96
a31 a32 a37 a38 a33 a34 a39 a35 a36
1 a41 a42 a47 a48 a43 a44 a49 a45 a46
a71 a72 a77 a78 a73 a74 a79 a75 a76
a81 a82 a87 a88 a83 a84 a89 a85 a86
La jerarquıa de software de ScaLAPACK es la siguiente:
ScaLAPACK
↑ ↑LAPACK PBLAS
↑ ↗ ↑BLAS BLACS
↑MPI
Se han utilizado las versiones optimizadas del lenguaje Fortran90 y de las
bibliotecas de algebra lineal numerica siguientes:
Compilador Fortran del sistema de compiladores de Intel [Cor03]
y del sistema de compiladores IBM4. Para la codificacion de los al-
goritmos disenados bajo el modelo de memoria compartida, se han
utilizado directivas OpenMP de este compilador.
MKL (Math Kernel Library). Es la biblioteca que contiene funciones
matematicas optimizadas para aplicaciones cientıficas e ingenieriles.
4http://publib.boulder.ibm.com/infocenter/lnxpcomp/index.jsp
20
Incluye: BLAS, LAPACK, PARDISO, biblioteca matematica vecto-
rial y biblioteca estadıstica vectorial optimizadas para procesadores
Intel [Cor04].
SCSL (Silicon Computing Scientific Libraries). Es la biblioteca que
contiene las versiones optimizadas de BLAS, LAPACK y ScaLA-
PACK para los sistemas SGI [SG03].
ESSL (Engineering and Scientific Subroutine Library) y PESSL
(Parallel ESSL). Estas bibliotecas proporcionan un conjunto de fun-
ciones matematicas para aplicaciones cientıficas e ingenieriles, opti-
mizadas para sistemas Linux en sistemas POWER de IBM5.
Todas estas bibliotecas garantizan eficienca, portabilidad y robustez de los
programas secuenciales y paralelos implementados en los cluster descritos.
1.7. Evaluacion de Algoritmos Paralelos
La evaluacion de los algoritmos paralelos requiere de metricas de presta-
ciones que consideren el tamano del problema a resolver (m) y el numero de
procesadores empleados para ello (Prc). Las metricas que se utilizan tıpica-
mente son [KGGKrp94]:
Tiempo de Ejecucion, que se denota con la funcion
T (m, Prc) = TA(m, Prc)tf + TC(m, Prc)
donde
TA(m, Prc) es el tiempo empleado por el algoritmo para realizar o-
peraciones aritmeticas
tf es el tiempo de ejecucion de una operacion en punto flotante
TC(m, Prc) es el tiempo empleado por el algoritmo para realizar
comunicaciones entre procesadores
En el modelo de paso de mensajes, el tiempo de comunicacion de un men-
saje de longitud m de un nodo a otro en una red de procesadores se expresa
como [DD95]:
TC(m, Prc) = tm + mtv
5http://publib.boulder.ibm.com/infocenter/clresctr/index.jsp
21
donde
tm es el tiempo de establecimiento de comunicacion entre los nodos
(latencia)
tv es el tiempo de transferencia de un mensaje de longitud 1 (inverso
del ancho de banda)
Aceleracion de ejecucion (Speedup), que mide la ganancia de velocidad de
ejecucion del algoritmo paralelo con respecto al mejor algoritmo secuencial que
resuelve el mismo problema. El Speedup esta dado por:
S(m, Prc) =T (m, 1)
T (m, Prc),
idealmente se espera que el Speedup sea igual al numero de procesadores em-
pleados [KGGKrp94].
Eficiencia, que mide el porcentaje del tiempo de ejecucion que los procesadores
se mantienen utilmente empleados. La Eficiencia se define como:
E(m, Prc) =S(m, Prc)
Prc,
donde la eficiencia ideal es igual a 1 [KGGKrp94].
Escalabilidad, que puede, a su vez, evaluarse mediante diferentes metricas que
pueden encontrarse en la literatura especializada [KGGKrp94]. Es conveniente
tener en cuenta las caracterısticas de los problemas con los que se esta tratando
para elegir la metrica adecuada de escalabilidad [MT97]. En este trabajo se
ha utilizado el Speedup escalado como se ha definido en [KGGKrp94] por su
facilidad de uso cuando resultados experimentales estan disponibles. El Speedup
escalado mide la capacidad que tiene el algoritmo paralelo de mantener sus
prestaciones cuando crecen en la misma proporcion los recursos del sistema y
el tamano del problema. Considerando que el costo teorico computacional de
un algoritmo secuencial es W , entonces, escalar el numero de procesadores Prc
y el tamano del problema en la misma proporcion, implica que si se escala el
numero de procesadores con kPrc, entonces W debe escalarse con kW .
Por lo tanto, para evaluar un algoritmo que se ejecute en los clusters de la
seccion anterior, se necesita estimar el valor de los parametros tf , tm y tv . El
valor de tf depende del tipo de operaciones de punto flotante que se realicen:
escalares, vectoriales o matriciales. Los resultados obtenidos para cada cluster
son:
22
Tiempo de Flop (tf )
Cluster Escalares Vectoriales Matriciales
Kubrick 3e-3 µseg 2e-2 µseg 3e-4 µseg
Kefren 3e-3 µseg 1e-2 µseg 5e-4 µseg
Aldebaran 3e-3 µseg 1e-2 µseg 2e-4 µseg
MareNostrum 1e-5 µseg 1e-3 µseg 1e-4 µseg
Los parametros de comunicaciones tm y tv se han medido utilizando un
algoritmo tipo ping-pong [DD95]. Para cada cluster los parametros obtenidos
son:
Cluster tm (latencia) tv (transferencia) ancho de banda
Kubrick 47 µseg 0.12 µseg/doble 66 Mbytes/seg
Kefren 5 µseg 0.048 µseg/doble 166 Mbytes/seg
Aldebaran 2 µseg 0.0012 µseg/doble 6.4 Gbytes/seg
MareNostrum 1 µseg 0.0095 µseg/doble 841 Mbytes/seg
1.8. Estructura del trabajo
Habiendo definido el problema a tratar y especificado las condiciones de
resolucion, en el Capıtulo 2 se abordan los metodos que resuelven el PIAVS,
presentando sus algoritmos secuenciales, las estructuras de datos utilizadas, la
estimacion de requerimientos de almacenamiento y pruebas numericas.
En el Capıtulo 3 se presenta una implementacion eficiente de los algoritmos
secuenciales del PIAVS, haciendo uso de rutinas implementadas en BLAS y
LAPACK, se estima la complejidad de tiempos de los algoritmos y se analizan y
evaluan los metodos del PIAVS de acuerdo a: eficiencia, complejidad de tiempo
de ejecucion, requerimientos de memoria, exactitud y convergencia.
En el Capıtulo 4 se paralelizan los algoritmos del PIAVS y se realizan pruebas
numericas para analizar sus prestaciones.
En el Capıtulo 5 se aborda la particularizacion de los algoritmos del PIAVS
para resolver el PIEVS, tanto secuencial como paralelamente, se analizan las
prestaciones de los algoritmos particularizados y se evaluan con respecto a los
algoritmos generales.
En el Capıtulo 6 se resuelve una particularizacion del PIVSVP, proponiendo
algoritmos paralelos bajo el Modelo de Memoria Distribuida y del Modelo de
Memoria Compartida, contrastando ambas implementaciones y analizando sus
ventajas e inconvenientes. Tambien se presenta un metodo para resolver una
generalizacion del PIVSVP.
Por ultimo, en el Capıtulo 7 se dan las conclusiones de este trabajo y las
perspectivas de investigacion que se desprenden del mismo.
23
Capıtulo 2
Metodos y Algoritmos
Secuenciales para la
Resolucion del PIAVS
En este capıtulo se desarrollan los algoritmos secuenciales que dan solucion
al PIAVS correspondientes a los metodos FB, MI, MIII y EP.
FB es un algoritmo que resulta de abordar el PIAVS haciendo uso directo
de sus caracterısticas inherentes y es uno de los aportes de este trabajo. MI ha
sido adaptado del Method I [FNO87] del PIVP por los autores de este trabajo.
EP es un algoritmo inspirado en el algoritmo Lift&Project [CC96] del PIVP y
es otro de los aportes de este trabajo. MIII se ha tomado directamente de la
literatura [Chu92a].
Todos los algoritmos son de naturaleza iterativa y calculan en cada iteracion
una aproximacion a la solucion c∗, partiendo de una aproximacion inicial c(0).
Las pruebas numericas para este capıtulo se han realizado ejecutando imple-
mentaciones Matlab. Implementaciones secuenciales eficientes se presentan en
el Capıtulo 3 utilizando el lenguaje de programacion Fortran y las herramientas
software de BLAS y LAPACK y en el Capıtulo 4 se presentan las implementa-
ciones correspondientes a los algoritmos paralelos disenados, utilizando Fortran,
BLACS y LAPACK, demas de las herramientas software PBLAS, ScaLAPACK,
BLACS y MPI.
Para las pruebas numericas de este capıtulo se ha utilizado un nodo del
cluster Kubrick sobre los casos ChuBai y Gral. El caso ChuBai tiene como puntos
iniciales y resultados esperados los de las Tablas 2.1 [Chu92a] y 2.2 [BMX03].
Para las pruebas del caso Gral se han considerado las dimensiones m = n =
{4, 5, 10, 15, 20, 25, 30, 40, 50}, con puntos iniciales c(0)i = c∗i + δ (i = 1, n), con
δ = {1e − 1, 1e0, 1e1}, con el fin de seleccionar puntos iniciales cercanos a la
24
Tabla 2.1: Puntos iniciales del caso ChuBaiPruebas Chu Pruebas Bai
casos c(0) S(0) c(0) S(0)
A 4.4029e-1 6.8899e0 1.4922e0 1.0619e1
3.9909e-1 5.1196e0 8.2514e-1 9.5193e0
-1.5330e0 3.9921e0 2.0528e0 5.8848e0
-1.3434e0 1.4204e0 1.3341e0 3.3880e0
B 1.9984e0 1.0936e1 2.8790e0 1.5645e1
1.3802e0 6.5910e0 1.7106e0 1.1566e1
-6.5989e-1 4.4004e0 1.5505e0 6.1310e0
-9.7495e-1 8.0045e-1 5.0169e-1 3.9678e0
C 1.0639e0 6.8109e0 2.7143e0 1.2923e1
1.2202e0 5.6892e0 -5.7860e-1 1.0640e1
-4.4669e-2 3.2544e0 2.2674e0 7.1825e0
6.6640e-3 1.3534e0 5.7221e-1 2.7371e0
Tabla 2.2: Resultados esperados del caso ChuBai
Pruebas Chu Pruebas Bai
casos c∗ S∗ c∗ S∗
A -8.8571e-2 5.2995e0 1.2541e0 7.6932e0
5.1462e-1 3.3937e0 7.8632e-1 6.4255e0
-1.0132e0 2.2206e0 1.1208e0 3.8780e0
-8.8725e-1 1.0707e0 8.2783e-1 2.2199e0
B 2.3693e0 1.3414e1 2.6314e0 1.2159e1
1.6524e0 8.0733e0 1.2748e0 8.3927e0
-1.3027e0 5.0761e0 5.7291e-1 3.8461e0
-9.3529e-1 3.8912e-1 -3.5826e-1 2.4688e0
C 8.8169e-1 6.9200e0 1.8505e0 1.0321e1
1.3168e0 5.1245e0 -1.4848e0 8.4827e0
-2.5081e-1 3.3331e0 2.0673e0 6.1540e0
-1.5865e-1 1.0240e0 -2.8719e-1 1.8127e0
solucion, por tratarse de metodos tipo Newton. Pruebas con dimensiones de
mayor orden (m = {O(102), O(103)}) seran consideradas en los Capıtulos 3 y 4.
En todos los casos considerados se ha aplicado una tolerancia de 5e− 6 para
el criterio de paro propio de cada algoritmo.
Los resultados arrojados por los experimentos numericos serviran en el si-
guiente capıtulo para analizar el comportamiento, las ventajas e inconvenientes
de los metodos, con base en aspectos espaciales, temporales, de convergencia y
exactitud.
Un denominador comun de los algoritmos es el conjunto de estructuras de
datos que utilizan todos ellos:
Ai para i = 0, n; son n+1 matrices de tamano m×n (A0, A1, ..., An).
S∗ vector de tamano n, almacena los valores singulares deseados.
25
c∗ vector de tamano n, almacena una de las soluciones del PIAVS.
c vector de tamano n, almacena las aproximaciones a la solucion
c∗, es decir, las n incognitas del sistema.
A este conjunto de estructuras de datos se anaden las propias de cada algo-
ritmo en el analisis de requerimiento de almacenamiento.
Para evitar problemas de almacenamiento con las dimensiones mayores, la
implementacion Matlab va generando las matrices Ai (i = 0, n) al momento de
utilizarlas, requiriendo solamente una matriz de m × n elementos en memoria,
en lugar de n + 1 matrices de m× n elementos.
2.1. Metodo Fuerza Bruta (FB)
El PIAVS requiere de encontrar un vector c tal que los valores singulares de
A(c) = A0 + c1A1 + ... + cnAn (2.1)
sean un conjunto de valores dados S∗ = {S∗1 , S∗
2 , ..., S∗n}, es decir, tal que la
descomposicion en valores singulares de A(c) sea
A(c) = Pdiag(S∗)Qt (2.2)
siendo P ∈ <m×m los vectores singulares izquierdos y Q ∈ <n×n los vectores
singulares derechos de A(c), correspondientes a S∗; estos son ortonormales, es
decir
P tP = Im (2.3)
QtQ = In. (2.4)
Con (2.2), (2.3) y (2.4) se puede construir un sistema de ecuaciones no
lineales de la forma
F (z) = 0 (2.5)
donde
z = [Q1,1, Q1,2, ..., Qn,n, P1,1, P1,2, ..., Pm,n, c1, c2, ..., cn]t, (2.6)
siendo que las incognitas del sistema son: el vector c (n incognitas) y los ele-
mentos de los vectores singulares P (mn incognitas 1) y Q (n2 incognitas); por
lo que (2.5) se expresa como
F (Q, P, c) = 0
1Se consideran solo los min{m, n} vectores singulares de P porque se manejan min{m, n}
valores singulares;
26
que por (2.2), (2.3) y (2.4), es el conjunto de ecuaciones siguientes
Fmn+n n+12 +(i−1)n+j−i+1(Q, P, c) = (QtQ− In)i,j ; i = 1, n; j = i, n; (2.7)
Fmn+(i−1)n+j−i+1(Q, P, c) = (P tP − Im)i,j ; i = 1, n; j = i, n; (2.8)
F(i−1)n+j(Q, P, c) = (A0 +
n∑
k=1
ckAk − Pdiag(S∗)Qt)i,j ; i = 1, m; j = 1, n;
(2.9)
Por (2.7) se tienen nn+12 ecuaciones, por (2.8) nn+1
2 ecuaciones y por (2.9)
se tienen mn ecuaciones mas. Por lo tanto, se ha definido un sistema no lineal
de mn + n2 + n ecuaciones con mn + n2 + n incognitas. Como es tıpico de este
tipo de sistemas, se utiliza el metodo de Newton para calcular una sucesion de
vectores z(0), z(1), z(2), ..., z(k) que aproximen a la solucion de F (z) = 0, es decir,
una sucesion de Q(0), P (0), c(0), Q(1), P (1), c(1), Q(2), P (2), c(2), ..., Q(k), P (k), c(k)
que aproximen a la solucion de F (Q, P, c) = 0. Entonces, si z(k) es el k-esimo
elemento de la sucesion, el (k+1)-esimo elemento esta dado por [DS83] [Kel95]:
z(k+1) = z(k) − J(z(k))−1F (z(k)) (2.10)
donde J(z(k)) es la matriz Jacobiana de F (z) evaluada en z(k). En este caso, la
matriz Jacobiana de F (Q, P, c) se define como
J(Q, P, c) =[
∂Fr(z)∂zt
]
r=1:mn+n2+n,t=1:mn+n2+n=
J1,1 0 0
0 J2,2 0
J3,1 J3,2 J3,3
donde J1,1, J2,2, J3,1, J3,2 y J3,3 son bloques de tamano n(n + 1)/2×n2, n(n +
1)/2×mn, mn× n2, mn×mn y mn× n, respectivamente, tales que
J1,1 =
[∂(QtQ− In)i,j
∂Qk,t
]
i=1:n n+12 ,j=1:n2
; k = 1, n; t = 1, n (2.11)
J2,2 =
[∂(P tP − Im)i,j
∂Pk,t
]
i=1:n n+12 ,j=1,mn
; k = 1, m; t = 1, n (2.12)
J3,1 =
[∂(A0 +
∑nl=1 clAl − Pdiag(S∗)Qt)i,j
∂Qk,t
]
i=1:mn,j=1:n2
; k = 1, n; t = 1, n
(2.13)
J3,2 =
[∂(A0 +
∑nl=1 clAl − Pdiag(S∗)Qt)i,j
∂Pk,t
]
i=1:mn,j=1:mn
; k = 1, m; t = 1, n
(2.14)
J3,3 =
[∂(A0 +
∑nl=1 clAl − Pdiag(S∗)Qt)i,j
∂ck
]
i=1:mn,j=1:n
; k = 1, n (2.15)
donde
para i = 0, n− 1; j = 1, n; row = 1 +∑i−1
k=0(n− k); col = i + (j − 1)n + 1
27
(J1,1)row,col = 2Qj,i+1
(J1,1)row+1:row+n−i−1,col = Qtj,i+2:n
(J1,1)row+a,col+a = Qj,i+1 a = 1, n− i− 1;
para i = 0, n− 1; j = 1, m; row = 1 +∑i−1
k=0(n− k); col = i + (j − 1)n + 1
(J2,2)row,col = 2Pj,i+1
(J2,2)row+1:row+n−i−1,col = P tj,i+2:n
(J2,2)row+a,col+a = Pj,i+1 a = 1, n− i− 1;
y para i = 1, m; j = 1, n; t = 1, n
(J3,1)(i−1)n+j,(j−1)n+t = S∗t Pi,t
(J3,2)(i−1)n+j,(i−1)n+t = S∗t Qj,t
(J3,3)(i−1)n+j,t = (At)i,j
Con lo definido hasta ahora se puede aplicar la iteracion de Newton (2.10)
al sistema de ecuaciones no lineales (2.5), que convergera cuadraticamente a
la solucion si se parte de un z(0) suficientemente cercano a esta, tal como se
demuestra en [DS83] [Kel95]. Al algoritmo correspondiente a este metodo se
da en la siguiente subseccion.
2.1.1. Algoritmo Fuerza Bruta
El algoritmo FB esta en el algoritmo 1. Este utiliza, ademas de Ai (i = 0, n),
S∗, c∗, c, las siguientes estructuras de datos:
A o P matriz de tamano m× n, almacena tanto la matriz A(c) = A0 +∑n
i=1 ciAi, como P , los n vectores singulares izquierdos de A(c),
es decir, m× n incognitas del sistema.
Q matriz de tamano n × n, almacena Qt, los n vectores singulares
transpuestos derechos de A(c), es decir, n× n incognitas del sis-
tema.
J matriz de tamano (mn + n2 + n) × (mn + n2 + n), almacena la
matriz Jacobiana de F (c) y su descomposicion lu.
S vector de tamano n, almacena los valores singulares de A(c).
28
Tabla 2.3: Dimensiones de F y J del algoritmo FB
m = n dimensiones de F dimensiones de J
4 36× 1 36 × 36
10 210 × 1 210 × 210
30 1830 × 1 1830 × 1830
50 5050 × 1 5050 × 5050
100 20100 × 1 20100 × 20100
500 500500 × 1 500500 × 500500
1000 2001000 × 1 2001000 × 2001000
Tabla 2.4: Requerimiento de memoria del algoritmo FB
Estructuras Numero de elementos de doble precision
F 3.6e01 2.1e02 1.8e03 5.1e03 2.0e04 5.0e05 2.0e06
J 1.3e03 4.4e04 3.3e06 2.6e07 4.0e08 2.5e11 4.0e12
Ai=0,n 8.0e01 1.1e03 2.8e04 1.3e05 1.0e06 1.3e08 1.0e09
A o P 1.6e01 1.0e02 9.0e02 2.5e03 1.0e04 2.5e05 1.0e06
Q 1.6e01 1.0e02 9.0e02 2.5e03 1.0e04 2.5e05 1.0e06
S∗ 4.0e00 1.0e01 3.0e01 5.0e01 1.0e02 5.0e02 1.0e03
c∗ 4.0e00 1.0e01 3.0e01 5.0e01 1.0e02 5.0e02 1.0e03
c 4.0e00 1.0e01 3.0e01 5.0e01 1.0e02 5.0e02 1.0e03
Total
dobles 1.5e03 4.6e04 3.4e06 2.6e07 4.1e08 2.5e11 4.0e12
Memoria
requerida 12 Kb 366 Kb 28 Mb 205 Mb 4 Gb 2006 Gb 32041 Gb
m = n 4 10 30 50 100 500 1000
F vector de tamano mn+n2+n, almacena la funcion F (c) evaluada
en alguna c.
Con la lista de estructuras de datos anterior se vislumbra el alto costo de
almacenamiento que tiene este algoritmo. La Tabla 2.3 ayuda a tener una idea
de las dimensiones de F y J , las estructuras de datos que mas almacenamiento
emplean, para diferentes valores de m y n.
Si se calcula el numero de bytes necesarios para almacenar dobles en F y
J y si ademas se contabiliza el resto de vectores y matrices que utiliza FB,
los montos de memoria requeridos son los de la tabla 2.4. Los altos montos
registrados limitaran el tamano de las pruebas del algoritmo. En este estudio se
ha tomado un tamano maximo de m = n = 50.
2.1.2. Probando Fuerza Bruta
Se empieza por probar este algoritmo con el caso ChuBai, los resultados
obtenidos estan en la Tabla 2.5, en la que se observa que en todos los casos FB
converge sin problemas a los resultados esperados, excepto el caso C del caso Bai
donde se alcanzan los valores singulares deseados bajo la tolerancia establecida,
29
Tabla 2.5: Resultados y convergencia del caso ChuBai con FB
Pruebas Chu Calculadas Pruebas Bai Calculadas
caso k c(k) S(k) k c(k) S(k)
A 5 -8.8570e-2 5.2995e0 9 1.2541e0 7.6932e0
5.1462e-1 3.3937e0 7.8632e-1 6.4255e0
-1.0132e0 2.2206e0 1.1208e0 3.8780e0
-8.8725e-1 1.0707e0 8.2783e-1 2.2199e0
B 6 2.3693e0 1.3414e1 5 2.6314e0 1.2159e1
1.6524e0 8.0733e0 1.2748e0 8.3927e0
-1.3027e0 5.0761e0 5.7291e-1 3.8461e0
-9.3529e-1 3.8912e-1 -3.5826e-1 2.4688e0
C 4 8.8169e-1 6.9200e0 6 1.6635e0 1.0321e1
1.3168e0 5.1246e0 -1.1349e0 8.4827e0
-2.5081e-1 3.3331e0 2.2105e0 6.1540e0
-1.5865e-1 1.0240e0 6.6457e-1 1.8127e0
Pruebas Chu Esperadas Pruebas Bai Esperadas
casos c∗ S∗ c∗ S∗
A -8.8571e-2 5.2995e0 1.2541e0 7.6932e0
5.1462e-1 3.3937e0 7.8632e-1 6.4255e0
-1.0132e0 2.2206e0 1.1208e0 3.8780e0
-8.8725e-1 1.0707e0 8.2783e-1 2.2199e0
B 2.3693e0 1.34141e0 2.6314e0 1.2159e1
1.6524e0 8.0733e0 1.2748e0 8.3927e0
-1.3027e0 5.0761e0 5.7291e-1 3.8461e0
-9.3529e-1 3.8912e-1 -3.5826e-1 2.4688e0
C 8.8169e-1 6.9200e0 1.8505e0 1.0321e1
1.3168e0 5.1245e0 -1.4848e0 8.4827e0
-2.5081e-1 3.3331e0 2.0673e0 6.1540e0
-1.5865e-1 1.0240e0 -2.8719e-1 1.8127e0
pero no ası la solucion c∗, vease la Tabla de errores 2.6 que refleja el hecho de
que el PIAVS puede tener mas de una solucion.
Los resultados arrojados por el algoritmo para el caso Gral estan en la Tabla
2.7. Observando esta tabla, para los casos m = n ≤ 10 el algoritmo converge con
todos los puntos iniciales probados, mientras que para los casos m = n > 10 se
observa alta sensibilidad al punto inicial, este debe ser mas cercano a la solucion
que para los casos de menor tamano; ası, cuando ‖F (c(0))‖2 > 10e4 el algoritmo
empeora las aproximaciones calculadas en 10 iteraciones.
A la vista de los resultados obtenidos, se puede concluir que, cuanto mas
grande sea m sera necesario dar un c(0) mas cercano a c∗ para converger.
30
Algoritmo 1 Fuerza Bruta (FB)
1. Calcular A(0) de acuerdo a (2.1)
2. Calcular descomposicion en valores singulares de A(0)
A(0) = P (0)diag(S(0))Q(0)t
3. Calcular F (0) de acuerdo a (2.7), (2.8) y (2.9)
4. Para k = 0,1,..., Mientras ‖F (k)‖2 > tol
4.1. Calcular J (k) de acuerdo a (2.11) - (2.15)
4.2. Calcular sol(k) resolviendo el sistema J (k)sol(k) = −F (k)
4.2.1. Calcular descomposicion lu de J (k)
4.2.2. Resolver los sistemas triangulares
L(k)x(k) = −F (k)
U (k)sol(k) = x(k)
4.3. [c(k+1), P (k+1), Q(k+1)]← [c(k), P (k), Q(k)] + sol(k)
4.4. Calcular F (k+1) de acuerdo a (2.7), (2.8) y (2.9)
Tabla 2.6: Errores del caso ChuBai con FB
Caso Chu ‖c∗ − c(k)‖2‖c∗−c(k)‖2
‖c∗‖2‖S∗ − S(k)‖2
‖S∗−S(k)‖2‖S∗‖2
A 2e-6 1e-6 9e-7 1e-7
B 3e-6 1e-6 4e-7 2e-8
C 1e-6 8e-7 1e-6 1e-7
Caso Bai ‖c∗ − c(k)‖2‖c∗−c(k)‖2
‖c∗‖2‖S∗ − S(k)‖2
‖S∗−S(k)‖2‖S∗‖2
A 7e-11 3e-11 8e-11 7e-12
B 3e-11 1e-11 3e-11 2e-12
C 1e0 3e-1 9e-11 6e-12
31
Tabla 2.7: Resultados del caso Gral con FB
c(0)i = c∗i + 1e− 1 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e1 2e-3 3 4e-12 1e-16
5 1e2 1e-3 2 5e-7 2e-12
10 4e2 2e-3 3 3e-11 1e-16
15 1e3 2e-3 3 5e-10 1e-16
20 1e3 2e-3 3 4e-10 1e-16
25 3e3 2e-3 3 2e-8 1e-15
30 4e3 2e-3 3 9e-9 5e-16
40 8e3 1e-3 3 1e-9 2e-16
50 1e4 1e-3 3 2e-6 1e-14
c(0)i = c∗i + 1e0 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e2 2e-2 3 3e-6 5e-11
5 1e3 1e-2 3 8e-9 4e-14
10 4e3 2e-2 4 4e-11 8e-17
15 1e4 2e-2 4 1e-6 4e-14
20 1e4 2e-2 5 2e-10 2e-16
25 3e4 2e-2 6 3e-10 1e-16
30 4e4 2e-2 5 5e-10 2e-16
40 8e4 1e-2 4 5e-8 2e-16
50 1e5 1e-2 10 1e10 8e1
c(0)i = c∗i + 1e1 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e3 2e-1 4 2e-10 6e-15
5 1e4 1e-1 5 9e-12 8e-17
10 4e4 2e-1 6 2e-8 1e-14
15 1e5 2e-1 10 4e7 2e0
20 1e5 2e-1 10 1e7 7e-1
25 3e5 2e-1 10 9e8 1e1
30 4e5 2e-1 10 9e9 3e1
40 8e5 1e-1 10 5e8 5e0
50 1e6 1e-1 10 1e11 1e1
32
2.2. Metodo I (MI)
Friedland, Nocedal y Overton presentan en [FNO87] un metodo llamado
Method I (y habitualmente referenciado ası por otros autores) que resuelve el
caso aditivo del PIVP. En esta seccion se utiliza la idea del Method I para
desarrollar un algoritmo tipo Newton: el Metodo I (MI), para resolver el PIAVS.
Por definicion del PIAVS, si la descomposicion en valores singulares de la matriz
A(c) (ecuacion (2.1)) es A(c) = P (c)diag(S(c))Q(c)t, se requiere encontrar un c
tal que S∗i −Si(c) = 0, para i = 1, n (S∗
i valor singular dado, Si(c) valor singular
de A(c)). De aquı se puede definir la funcion
F (c) = [Fi(c)]i=1,n = [Si(c)− S∗i ]i=1,n
que da lugar al problema de resolver el sistema de ecuaciones no lineales
F (c) = [Si(c)− S∗i ]i=1,n = 0. (2.16)
para el que se utiliza el metodo de Newton que, como se vio en 2.1, consiste en
calcular una sucesion de aproximaciones a la solucion de (2.16), de modo que si
c(k) es el ultimo elemento de la sucesion, para calcular el siguiente se resuelve
J(c(k))(
c(k+1) − c(k))
= −F (c(k)),
siendo J(c(k)) la matriz jacobiana de F (c) evaluado en c(k) [DS83][Kel95].
Tambien se sabe que J(c) tiene la forma
J(c) =
[∂Fi(c)
∂cj
]
i,j=1,n
,
y si se define S ≡ S(c), J ≡ J(c) y F ≡ F (c), se tiene que
J =
[∂Fi
∂cj
]
i,j=1,n
,
donde∂Fi
∂cj=
∂Si
∂cj− ∂S∗
i
∂cj, i, j = 1, n.
De la descomposicion en valores singulares de A(c), y siendo A ≡ A(c),
S ≡ S(c), P ≡ P (c), Q ≡ Q(c), se tiene que
P tAQ = diag(S)⇒ ptiAqi = Si, i, j = 1, n
⇒∂Si
∂cj=
∂ptiAqi
∂cj=
∂pti
∂cjAqi + pt
i
∂A
∂cjqi + pt
iA∂qi
∂cj, i, j = 1, n,
y tambien que
P tA = diag(S)Qt y AQ = Pdiag(S),
33
por lo que
∂Si
∂cj=
∂pti
∂cjpiSi + pt
i
∂A
∂cjqi + Siq
ti
∂qi
∂cji, j = 1, n.
Como P y Q son ortogonales
ptipi = 1
qtiqi = 1
⇒
(pi)21 + · · ·+ (pi)
2m = 1
(qi)21 + · · ·+ (qi)
2n = 1
⇒
2(pi)1∂(pi)1
∂cj+ · · ·+ 2(pi)m
∂(pi)m
∂cj= 0
2(qi)1∂(qi)1
∂cj+ · · ·+ 2(qi)n
∂(qi)n
∂cj= 0
⇒
[∂(pi)1
∂cj· · · ∂(pi)m
∂cj
]
[(pi)1 · · · (pi)n]t= 0
[∂(qi)1
∂cj· · · ∂(qi)n
∂cj
]
[(qi)1 · · · (qi)n]t= 0
⇒
[∂pi
∂cj
]t
pi = 0[
∂qi
∂cj
]t
qi = 0i, j = 1, n
entonces
∂Si
∂cj= pt
i
∂A
∂cjqi =
= pti
∂(A0 + c1A1 + · · ·+ cnAn)
∂cjqi =
= ptiAjqi; i, j = 1, n,
por lo que
∂Fi
∂cj=
∂Si
∂cj− ∂S∗
i
∂cj= pt
iAjqi − 0, para i, j = 1, n.
Por lo tanto, la matriz jacobiana de F es
J =[pt
iAjqi
]
i,j=1,n. (2.17)
Por otra parte,
F = [Si − S∗i ]i=1,n = [pt
iAqi − S∗i ]i=1,n =
= [pti (AO + c1A1 + · · ·+ cnAn) qi − S∗
i ]i=1,n =
= [ptiA0qi − S∗
i + ptic1A1qi + · · ·+ pt
icnAnqi]i=1,n =
34
= [ptiA0qi − S∗
i ]i=1,n +
+ [ptiA1qi, p
tiA2qi, · · · , pt
iAnqi]i=1,n
c1
c2
...
cn
,
entonces
F =[pt
iA0qi − S∗i
]
i=1,n+ Jc. (2.18)
De (2.17) y (2.18), el metodo de Newton queda como sigue
J (k)c(k+1) − J (k)c(k) = −[
p(k)ti A0q
(k)i − S∗
i
]
i=1,n− J (k)c(k),
es decir
J (k)c(k+1) = b(k) (2.19)
donde
b(k) = S∗ −[
p(k)ti A0q
(k)i
]
i=1,n. (2.20)
Como se ha aplicado el metodo de Newton, la convergencia de este algorit-
mo esta sujeto a la seleccion de un punto inicial c(0) cercano a la solucion c∗
[DS83] [Kel95].
2.2.1. Automatizacion del Metodo I
Para automatizar el Metodo I se han utilizado las estructuras de datos Ai
(i = 0, n), S∗, c∗, c, ademas de:
A o P matriz de tamano m× n, almacena tanto la matriz A(c) = A0 +∑n
i=1 ciAi, como P , los n vectores singulares izquierdos de A(c).
Q matriz de tamano n × n, almacena Qt, los n vectores singulares
transpuestos derechos de A(c).
J matriz de tamano n× n, almacena la matriz jacobiana de F (c) y
su descomposicion lu.
AUX matriz de tamano m×m, auxiliar en la realizacion de operaciones
requeridas en el metodo.
S vector de tamano n, almacena los valores singulares de A(c).
b vector de tamano n, almacena el vector de terminos independi-
entes del sistema (2.19).
35
Tabla 2.8: Requerimiento de memoria de algoritmo MI
Estructuras Numero de elementos de doble precision
Ai=0,n 8.0e1 1.1e3 2.8e4 1.3e5 1.0e6 1.3e8 1.0e9
J, AoP,Qt 1.6e1 1.0e2 9.0e2 2.5e3 1.0e4 2.5e5 1.0e6
S∗, S, c∗, c 4.0e0 1.0e1 3.0e1 5.0e1 1.0e2 5.0e2 1.0e3
Total
dobles 1.5e2 1.5e3 3.1e4 1.4e5 1.0e6 1.3e8 1.0e9
Memoria
requerida 1.2 Kb 12 Kb 250 Kb 1.1 Mb 8.3 Mb 1 Gb 8 Gb
m = n 4 10 30 50 100 500 1000
Algoritmo 2 Metodo I
1. Calcular A(0) de acuerdo a (2.1)
2. Calcular descomposicion en valores singulares de A(0)
A(0) = P (0)diag(S(0))Q(0)t
3. Para k = 0,1,..., Mientras ‖S(k) − S∗‖2 > tol
3.1. Calcular J (k) de acuerdo a (2.17)
3.2. Calcular b(k) de acuerdo a (2.20)
3.3. Calcular c(k+1) resolviendo el sistema J (k)c(k+1) = b(k)
3.3.1. Calcular descomposicion lu de J (k)
3.3.2. Resolver los sistemas triangulares
L(k)x(k) = b(k)
U (k)c(k+1) = x(k)
3.4. Calcular A(k+1) de acuerdo a (2.1)
3.5. Calcular descomposicion en valores singulares de A(k+1)
A(k+1) = P (k+1)diag(S(k+1))Q(k+1)t
Estimando el monto de memoria necesario para manejar dobles en este al-
goritmo, se obtienen los resultados de la Tabla 2.8. Como era de esperarse, el
mayor monto se lo llevan las matrices A, Ai (i = 0, n) si se almacenan como
matrices densas.
Los pasos que sigue el Metodo I estan en el algoritmo 2.
2.2.2. Pruebas Numericas del Metodo I
Para el caso ChuBai se han obtenido los resultados de la Tabla 2.9, que
corresponden a los S∗ esperados en todos los casos y a los c∗ esperados excepto
para las pruebas A y C del caso Bai; los errores con los que se da cuenta de
estos hechos estan en la Tabla 2.10.
Se observan ahora los resultados de las pruebas Gral en la Tabla 2.11. Para
los casos m = n ≤ 10 no hay problemas de convergencia para los puntos iniciales
probados, no sucede ası para los casos de mayor tamano, pues cuanto mas
36
Tabla 2.9: Resultados del caso ChuBai con MIPruebas Chu Calculadas Pruebas Bai Calculadas
caso k c(k) S(k) k c(k) S(k)
A 4 -8.8571e-2 5.2995e0 7 1.6023e0 7.6932e0
5.1462e-1 3.3937e0 5.2371e-1 6.4255e0
-1.0132e0 2.2206e0 9.8096e0 3.8780e0
-8.8725e-1 1.0707e0 8.2035e-1 2.2199e0
B 6 2.3693e0 1.3414e1 4 2.6314e0 1.2159e1
1.6524e0 8.0733e0 1.2748e0 8.3927e0
-1.3027e0 5.0761e0 5.7291e-1 3.8461e0
-9.3529e-1 3.8912e-1 -3.5826e-1 2.4688e0
C 4 8.8169e-1 6.9200e0 5 1.6635e0 1.0321e1
1.3168e0 5.1245e0 -1.1349e0 8.4827e0
-2.5081e-1 3.3331e0 2.2105e0 6.1540e0
-1.5865e-1 1.0240e0 6.6457e-1 1.8127e0
Pruebas Chu Esperadas Pruebas Bai Esperadas
casos c∗ S∗ c∗ S∗
A -8.8571e-2 5.2995e0 1.2541e0 7.6932e0
5.1462e-1 3.3937e0 7.8632e-1 6.4255e0
-1.0132e0 2.2206e0 1.1208e0 3.8780e0
-8.8725e-1 1.0707e0 8.2783e-1 2.2199e0
B 2.3693e0 1.34141e0 2.6314e0 1.2159e1
1.6524e0 8.0733e0 1.2748e0 8.3927e0
-1.3027e0 5.0761e0 5.7291e-1 3.8461e0
-9.3529e-1 3.8912e-1 -3.5826e-1 2.4688e0
C 8.8169e-1 6.9200e0 1.8505e0 1.0321e1
1.3168e0 5.1245e0 -1.4848e0 8.4827e0
-2.5081e-1 3.3331e0 2.0673e0 6.1540e0
-1.5865e-1 1.0240e0 -2.8719e-1 1.8127e0
Tabla 2.10: Errores del caso ChuBai con MI
Pruebas Chu ‖c∗ − c(k)‖2‖c∗−c(k)‖2
‖c∗‖2‖S∗ − S(k)‖2
‖S∗−S(k)‖2‖S∗‖2
A 1.6612e-08 1.15e-08 2.1301e-08 3.1516e-09
A 3.9907e-06 1.21e-06 4.0914e-07 2.4852e-08
C 2.5826e-11 1.60e-11 4.2425e-11 4.5667e-12
Pruebas Bai ‖c∗ − c(k)‖2‖c∗−c(k)‖2
‖c∗‖2‖S∗ − S(k)‖2
‖S∗−S(k)‖2‖S∗‖2
A 4.5808e-01 2.26e-01 1.1960e-06 1.0898e-07
B 2.5623e-09 8.55e-10 2.1865e-09 1.4138e-10
C 1.0410e+00 3.30e-01 4.6388e-11 3.1300e-12
37
alejados esten de la solucion, mas casos van teniendo problemas de convergencia.
38
Tabla 2.11: Resultados y convergencia del caso Gral con MI
c(0)i = c∗i + 1e− 1 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e1 2e-3 2 3e-6 1e-10
5 1e2 1e-3 2 1e-7 2e-12
10 4e2 2e-3 2 2e-7 1e-12
15 1e3 2e-3 3 7e-11 1e-16
20 1e3 2e-3 3 6e-10 6e-16
25 3e3 2e-3 3 1e-9 8e-16
30 4e3 2e-3 3 9e-10 4e-16
40 8e3 1e-3 3 1e-0 2e-16
50 1e4 1e-3 3 1e-6 2e-13
c(0)i = c∗i + 1e0 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e2 2e-2 3 1e-6 5e-11
5 1e3 1e-2 3 1e-9 1e-14
10 4e3 2e-2 3 1e-6 4e-12
15 1e4 2e-2 4 3e-8 8e-14
20 1e4 2e-2 5 2e-10 2e-16
25 3e4 2e-2 5 1e-6 8e-13
30 4e4 2e-2 4 2e-7 1e-13
40 8e4 1e-2 4 5e-10 1e-16
50 1e5 1e-2 10 2e6 3e-1
c(0)i = c∗i + 1e1 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e3 2e-1 5 2e-10 1e-14
5 1e4 1e-1 4 1e-7 2e-12
10 4e4 2e-1 6 2e-11 1e-16
15 1e5 2e-1 10 2e7 3e1
20 1e5 2e-1 10 2e5 5e-1
25 3e5 2e-1 10 2e6 1e0
30 4e5 2e-1 10 2e8 7e1
40 8e5 1e-1 10 1e6 8e-1
50 1e6 1e-1 10 1e7 4e0
39
2.3. Metodo Elevacion-Proyeccion (EP)
El metodo Elevacion-Proyeccion para resolver el PIAVS se deriva de manera
similar a como lo hace el metodo Lift&Project propuesto por Chu [Chu98] y
Chen [CC96] para el caso aditivo del PIVP. El metodo consiste en definir los
conjuntos Γ(S∗) y Λ(c), donde Γ(S∗) es el conjunto de todas las matrices en
<m×n, m ≥ n, cuyos valores singulares son S∗ = {S∗1 , S∗
2 , ..., S∗n}
Γ(S∗) = {Pdiag(S∗)Qt|P ∈ <m×nortogonal, Q ∈ <n×nortogonal} (2.21)
y Λ(c) es el conjunto de las matrices de la forma A(c) (ecuacion (2.1))
Λ(c) = {A(c)|c ∈ <n}, (2.22)
con el proposito de encontrar la interseccion de ambos a traves de la mini-
mizacion de distancias, considerando que la distancia entre dos matrices U y V
esta definida segun dist(U, V ) = ‖U − V ‖F .
El metodo puede organizarse iterativamente en dos fases: la fase de elevacion
y la fase de proyeccion. Para la iteracion k, la fase de elevacion consiste en,
dado un c(k), y por consiguiente una A(c(k)) ∈ Λ(c), encontrar un elemento
X(k) ∈ Γ(S∗) tal que dist(A(c(k)), X(k)) = dist(A(c(k)), Γ(S∗)); para ello es
suficiente con calcular la descomposicion en valores singulares de A(k) ≡ A(c(k))
A(k) = P (k)diag(S(k))Q(k)t
para calcular la distancia mas corta entre A(k) y Γ(S∗), que se alcanza en el
punto [Bro91] [Chu92b]
X(k) = P (k)diag(S∗)Q(k)t.
La fase de proyeccion consiste en, dado un X (k) ∈ Γ(S∗), encontrar c(k+1), y
por lo tanto A(k+1) ∈ Λ(c), tal que dist(X(k), A(k+1)) = dist(X(k), Λ(c)). Esto
se hace encontrando c(k+1) que minimice dist(X(k), A(k+1)), es decir, si se define
F (k+1) ≡ F (c(k+1)) = ‖A(k+1) − P (k)diag(S∗)Qt(k)‖2F , (2.23)
se tiene que resolver el siguiente problema de mınimos cuadrados no lineales
minF (k+1) = minc(k+1)
‖A(k+1) − P (k)diag(S∗)Qt(k)‖2F . (2.24)
La resolucion se lleva a cabo igualando el gradiente de F (k+1) a cero y
resolviendo el sistema de ecuaciones lineales resultante
∇F (k+1) = ∇‖A(k+1) − P (k)diag(S∗)Qt(k)‖2F = 0. (2.25)
40
El gradiente de F (k+1) se desarrolla como sigue. De la funcion (2.23) se
tiene que
F (k+1) = ‖A(k+1) − P (k)diag(S∗)Q(k)t‖2F =
=
(√
tr([
A(k+1) − P (k)diag(S∗)Q(k)t]t [
A(k+1) − P (k)diag(S∗)Q(k)t]))2
=
= tr([
A(k+1)t −Q(k)diag(S∗)P (k)t] [
A(k+1) − P (k)diag(S∗)Q(k)t])
=
= tr(A(k+1)tA(k+1) −A(k+1)tP (k)diag(S∗)Q(k)t−−Q(k)diag(S∗)P (k)tA(k+1) + Q(k)diag(S∗)P (k)tP (k)diag(S∗)Q(k)t) =
= tr(
A(k+1)tA(k+1))
− tr(
A(k+1)tP (k)diag(S∗)Q(k)t)
−
− tr(
Q(k)diag(S∗)P (k)tA(k+1))
+ tr(
Q(k)diag(S∗)P (k)tP (k)diag(S∗)Q(k)t)
;
= tr(
A(k+1)tA(k+1))
− 2tr(
A(k+1)tP (k)diag(S∗)Q(k)t)
+
+ tr(
Q(k)diag(S∗)P (k)tP (k)diag(S∗)Q(k)t)
=
= ϕ1 − 2ϕ2 + ϕ3,
donde
ϕ1 = tr(
A(k+1)tA(k+1))
ϕ2 = 2tr(
A(k+1)tP (k)diag(S∗)Q(k)t)
ϕ3 = tr(
Q(k)diag(S∗)P (k)tP (k)diag(S∗)Q(k)t)
;
con esto, la ecuacion (2.25) se puede escribir como sigue
∇F (k+1) = ∇ϕ1 − 2∇ϕ2 +∇ϕ3 = 0. (2.26)
Desarrollando y calculando los gradientes de ϕ1, ϕ2 y ϕ3, se tiene que
ϕ1 = tr(A(k+1)tA(k+1)
)=
= tr
((
A0 +∑n
i=1 c(k+1)i Ai
)t (
A0 +∑n
i=1 c(k+1)i Ai
))
=
= tr((
At0 +
∑ni=1 c
(k+1)i At
i
)(
A0 +∑n
i=1 c(k+1)i Ai
))
=
= tr(At0A0 +
∑ni=1 c
(k+1)i At
0Ai +∑n
i=1 c(k+1)i At
iA0+
+∑n
i=1
∑nj=1 c
(k+1)i At
ic(k+1)j Aj) =
41
= tr (At0A0) + 2
∑ni=1 c
(k+1)i tr (At
0Ai) +
+∑n
i=1
∑nj=1 c
(k+1)i c
(k+1)j tr (At
iAj),
∇ϕ1 =[
∂ϕ1
∂c(k+1)r
]
r=1,n=
= [0 + 2tr (At0Ar) +
∑ni=1 c
(k+1)i tr (At
iAr) +
+∑n
i=1 c(k+1)i tr (At
rAi)]r=1,n =
=[
2tr (At0Ar) + 2
∑ni=1 c
(k+1)i tr (At
iAr)]
r=1,n;
ϕ2 = 2tr(A(k+1)tP (k)diag(S∗)Q(k)t
)=
= 2tr((
At0 +
∑ni=1 c
(k+1)i At
i
)
P (k)diag(S∗)Q(k)t)
=
= 2tr(At
0P(k)diag(S∗)Q(k)t
)+ 2tr
(∑n
i=1 c(k+1)i At
iP(k)diag(S∗)Q(k)t
)
=
= 2tr(At
0P(k)diag(S∗)Q(k)t
)+ 2
∑ni=1 c
(k+1)i tr
(At
iP(k)diag(S∗)Q(k)t
),
∇ϕ2 =[
∂ϕ2
∂c(k+1)r
]
r=1,n=[0 + 2tr
(At
rP(k)diag(S∗)Q(k)t
)]
r=1,n;
∇ϕ3 =[
∂ϕ3
∂c(k+1)r
]
r=1,n= 0.
De los resultados anteriores, la ecuacion (2.26) tiene la siguiente forma:
∇F (k+1) =
[
2tr(At
rA0
)+ 2
n∑
i=1
c(k+1)i tr
(At
iAr
)− 2tr
(
AtrP
(k)diag(S∗)Q(k)t)]
r=1,n
= 0
entonces
[n∑
i=1
c(k+1)i tr
(At
iAr
)
]
r=1,n
=[
tr(
AtrP
(k)diag(S∗)Q(k)t)
− tr(At
rA0
)]
r=1,n
⇒[tr(At
iAr
)]
r,i=1,n[c]i=1,n =
[
tr(
Atr
(
P (k)diag(S∗)Q(k)t −A0
))]
r=1,n;
(2.27)
42
ahora, si se define
Atr =[tr(At
iAr
)]
r,i=1,n(2.28)
y
btr =[
tr(
Atr
(
P (k)diag(S∗)Q(k)t −A0
))]
r=1,n=[
tr(
Atr
(
X(k) −A0
))]
r=1,n
(2.29)
(2.27) se escribe como
Atrc(k+1) = b
(k)tr , (2.30)
que es el sistema de ecuaciones lineales que da solucion al problema de mınimos
cuadrados (2.24). Se observa que la matriz Atr no depende del valor de c(k+1)
en las diferentes iteraciones, entonces se puede calcular una sola vez antes de
empezarlas.
Con lo ya visto, se puede construir el algoritmo iterativo Elevacion-Proyeccion
para resolver el PIAVS que converja a un punto estacionario del problema de
minimizacion definido, en el sentido de que
‖A(k+1) −X(k+1)‖F ≤ ‖A(k) −X(k)‖F ; (2.31)
es decir, en la k-esima fase de proyeccion, se calcula c(k+1) que minimice ‖A(k+1)−X(k)‖F , entonces
‖A(k+1) −X(k)‖F ≤ ‖A(k) −X(k)‖F .
Por otra parte, en la (k+1)esima fase de elevacion las matrices que minimizan
‖A(k+1) −X(k+1)‖F son P (k+1) y Q(k+1), entonces
‖A(k+1) − P (k+1)diag(S∗)Q(k+1)t‖F ≤ ‖A(k+1) − P (k)diag(S∗)Q(k)t‖F ,
por lo que
‖A(k+1) −X(k+1)‖F ≤ ‖A(k+1) −X(k)‖F .
2.3.1. Algoritmo secuencial Elevacion-Proyeccion
Elevacion-Proyeccion utiliza las siguientes estructuras de datos en su autom-
atizacion: Ai (i = 0, n), S∗, c∗, c, ademas de:
A o P matriz de tamano m× n, almacena tanto la matriz A(c) = A0 +∑n
i=1 ciAi, como P, los n vectores singulares izquierdos de A(c).
Q matriz de tamano n × n, almacena Qt, los n vectores singulares
transpuestos derechos de A(c).
Atr matriz de tamano n × n, almacena los coeficientes del sistema
(2.30).
43
Tabla 2.12: Requerimiento de memoria de EP
Estructuras Numero de elementos de doble precision
A− i = 0, n 8.0e+01 1.1e+03 2.8e+04 1.3e+05 1.0e+06 1.3e+08 1.0e+09
A o P,Q,Atr 1.6e+01 1.0e+02 9.0e+02 2.5e+03 1.0e+04 2.5e+05 1.0e+06
S∗, S, c∗, c, btr 4.0e+00 1.0e+01 3.0e+01 5.0e+01 1.0e+02 5.0e+02 1.0e+03
Total
dobles 1.5e+02 1.5e+03 3.1e+04 1.4e+05 1.0e+06 1.3e+08 1.0e+09
Memoria
requerida 1.2 Kb 12 Kb 250 Kb 1.1 Mb 8.3 Mb 1 Gb 8 Gb
m = n 4 10 30 50 100 500 1000
AUX matriz de tamano m×m, auxiliar en la realizacion de operaciones
requeridas en el metodo, tambien almacena el vector de terminos
independientes del sistema (2.30).
S vector de tamano n, almacena los valores singulares de A(c) y los
valores de c(k−1) cuando se esta en la iteracion k.
Si las estructuras de datos anteriores almacenan dobles, el monto de memoria
necesario para almacenarlos, en diferentes tamanos de problema, se registra en
la Tabla 2.12.
Las dos fases de EP se presentan en el algoritmo 3. Aprovechando que Atr
es independiente de c(k), se calcula una sola vez antes de entrar al ciclo (paso 1
del algoritmo), lo mismo que su inversa (paso 2), con el fin de que el calculo de
la nueva solucion c(k+1) no requiera de resolver el sistema de ecuaciones lineales
Atrc(k+1) = b
(k)tr ,
sino solamente realizar una multiplicacion matriz-vector, es decir,
c(k+1) = inversa(Atr)b(k)tr ,
como en el paso 4.5.
2.3.2. Pruebas Numericas de Elevacion-Proyeccion
Los resultados que da Elevacion-Proyeccion en el caso ChuBai estan en la
Tabla 2.13. Se observa convergencia en todos los casos (ver ‖c(k) − c(k−1)‖2 en
Tabla 2.14), sin embargo lo hace despues de un alto numero de iteraciones y
los valores singulares alcanzados tienen, en el peor de los casos, una exactitud
de 1e-3. En el caso C de Bai, c(k) no aproxima a c∗, sino que representa una
solucion diferente con la que alcanzar los valores singulares S∗.
Ahora se prueban los casos del tipo Gral, utilizando los mismos c(0) que en
FB y MI, los resultados de la Tabla 2.15 indican que LP converge en todos
44
Tabla 2.13: Resultados del caso ChuBai con EPPruebas Chu Calculadas Pruebas Bai Calculadas
caso k c(k) S(k) k c(k) S(k)
A 901 -8.8371e-2 5.2994e0 1080 1.2533e0 7.6933e0
5.1430e-1 3.3936e0 7.8646e-1 6.4254e0
-1.0125e0 2.2208e0 1.1214e0 3.8781e0
-8.8843e-1 1.0710e0 8.2787e-1 2.2201e0
B 4339 2.3670e0 1.3414e1 202 2.6313e0 1.2159e1
1.6615e0 8.0737e0 1.2748e0 8.3927e0
-1.2933e0 5.0769e0 5.7296e-1 3.8462e0
-9.2641e-1 3.8932e-1 -3.5816e-1 2.4688e0
C 115 8.8174e-1 6.9200e0 1947 1.6635e0 1.0321e1
1.3168e0 5.1246e0 -1.1331e0 8.4828e0
-2.5084e-1 3.3331e0 2.2105e0 6.1541e0
-1.5863e-1 1.0239e0 6.6644e-1 1.8131e0
Pruebas Chu Esperadas Pruebas Bai Esperadas
casos c∗ S∗ c∗ S∗
A -8.8571e-2 5.2995e0 1.2541e0 7.6932e0
5.1462e-1 3.3937e0 7.8632e-1 6.4255e0
-1.0132e0 2.2206e0 1.1208e0 3.8780e0
-8.8725e-1 1.0707e0 8.2783e-1 2.2199e0
B 2.3693e0 1.34141e0 2.6314e0 1.2159e1
1.6524e0 8.0733e0 1.2748e0 8.3927e0
-1.3027e0 5.0761e0 5.7291e-1 3.8461e0
-9.3529e-1 3.8912e-1 -3.5826e-1 2.4688e0
C 8.8169e-1 6.9200e0 1.8505e0 1.0321e1
1.3168e0 5.1245e0 -1.4848e0 8.4827e0
-2.5081e-1 3.3331e0 2.0673e0 6.1540e0
-1.5865e-1 1.0240e0 -2.8719e-1 1.8127e0
Tabla 2.14: Errores del caso ChuBai con EP
Pruebas Chu ‖c(k) − c(k−1)‖2 ‖c∗ − c(k)‖2‖c∗−c(k)‖2
‖c∗‖2‖S∗ − S(k)‖2
‖S∗−S(k)‖2‖S∗‖2
A 4.9989e-6 1.4363e-3 9.9438e-4 3.3574e-4 4.9676e-5
B 4.9987e-6 1.6024e-2 4.8499e-3 1.0727e-3 6.5156e-5
C 4.9991e-6 7.5861e-5 4.7052e-5 6.3992e-5 6.8882e-6
Pruebas Bai ‖c(k) − c(k−1)‖2 ‖c∗ − c(k)‖2‖c∗−c(k)‖2
‖c∗‖2‖S∗ − S(k)‖2
‖S∗−S(k)‖2‖S∗‖2
A 4.9794e-6 9.8487e-4 4.8447e-4 2.6098e-4 2.3781e-5
B 4.9336e-6 1.2155e-4 4.0504e-5 7.7979e-5 5.0423e-6
C 4.9934e-6 1.0434e0 3.3018e-1 4.5603e-4 3.0771e-5
45
Algoritmo 3 Elevacion-Proyeccion
1. Calcular Atr de acuerdo a (2.28)
2. Calcular inversa de Atr
3. parar ← FALSO
4. Para k = 0,1,..., Mientras NO parar
4.1. Calcular A(k) de acuerdo a (2.1)
4.2. Calcular descomposicion en valores singulares de A(k)
A(k) = P (k)diag(S(k))Q(k)t
4.3. X(k) ← P (k)diag(S∗)Q(k)t
4.4. Calcular b(k)tr de acuerdo a (2.29)
4.5. Calcular c(k+1) resolviendo el sistema Atrc(k+1) = b
(k)tr
c(k+1) ← inversa(Atr) ∗ btr
4.6. error ← ‖c(k+1) − c(k)‖24.7. Si error < tol entonces parar ← V ERDADERO
los casos, incluso en aquellos donde FB y MI no lo hacen. Lo errores de estas
pruebas estan en la Tabla 2.16.
En cuanto a la calidad de los resultados, si la medimos con respecto a los
errores relativos ‖S(k)−S∗‖2
‖S∗‖2, estos son aceptables.
Por los resultados vistos, se puede concluir que Elevacion-Proyeccion siempre
converge en el sentido (2.31); sin embargo, la calidad de S(k), con respecto al
error absoluto ‖S(k) − S∗‖2, se ve afectada cuando m se incrementa y c(0) se
aleja de c∗.
46
Tabla 2.15: Resultados del caso Gral con EP
c(0)i = c∗i + 1e− 1 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e1 2e-3 365 3e-3 1e-7
5 1e2 1e-3 206 3e-3 4e-8
10 4e2 2e-3 561 1e-2 6e-8
15 1e3 2e-3 3398 8e-2 1e-7
20 1e3 2e-3 2629 1e-1 1e-7
25 3e3 2e-3 1998 2e-1 1e-7
30 4e3 2e-3 4048 2e-1 1e-7
40 8e3 1e-3 6304 2e-1 6e-8
50 1e4 1e-3 5303 4e-1 6e-8
c(0)i = c∗i + 1e0 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e2 2e-2 541 3e-3 1e-7
5 1e3 1e-2 298 3e-3 5e-8
10 4e3 2e-2 829 9e-2 4e-7
15 1e4 2e-2 9107 9e-2 2e-7
20 1e4 2e-2 10944 1e-1 1e-7
25 3e4 2e-2 44409 4e-1 2e-7
30 4e4 2e-2 17584 9e-1 4e-7
40 8e4 1e-2 20959 5e-1 1e-7
50 1e5 1e-2 17542 7e-1 1e-7
c(0)i = c∗i + 1e1 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e3 2e-1 661 3e-3 1e-7
5 1e4 1e-1 433 4e-3 6e-8
10 4e4 2e-1 44240 1e-1 5e-7
15 1e5 2e-1 13965 9e-2 2e-7
20 1e5 2e-1 36697 9e1 9e-5
25 3e5 2e-1 86799 7e-1 5e-7
30 4e5 2e-1 674557 2e0 1e-6
40 8e5 1e-1 51290 6e-1 1e-7
50 1e6 1e-1 126822 1e2 1e-5
47
Tabla 2.16: Convergencia de EP para el caso Gral
Errores ‖c(k) − c(k−1)‖2
m = n c(0)i = c∗i + 1e− 1 c
(0)i = c∗i + 1e0 c
(0)i = c∗i + 1e1
4 4e-6 4e-6 4e-6
5 4e-6 4e-6 4e-6
10 4e-6 4e-6 5e-6
15 5e-6 5e-6 5e-6
20 5e-6 5e-6 5e-6
25 5e-6 5e-6 5e-6
30 5e-6 5e-6 5e-6
40 5e-6 5e-6 5e-6
50 5e-6 5e-6 5e-6
48
2.4. Metodo III (MIII)
En [Chu92a], Chu presenta un metodo para resolver el PIAVS, basado en
el Method III que Friedland Nocedal y Overton dan en [FNO87] para resolver
el caso aditivo del PIVP, y que en esta seccion se automatiza en el algoritmo
llamado Metodo III (MIII).
La idea de MIII, al igual que EP, es encontrar la interseccion entre los con-
juntos Γ(S∗) y Λ(c), definidos en (2.21) y (2.22), respectivamente, con el fin
de encontrar el c tal que los valores singulares de A(c) de la ecuacion (2.1)
sean S∗; pero, a diferencia de EP, que aplica tecnicas de mınimos cuadrados
para calcular tal interseccion, MIII lo hace a traves de un metodo iterativo tipo
Newton. Se denota con k a la k-esima iteracion del metodo y se definen dos
problemas:
Problema 1. Dada X(k) ∈ Γ(S∗) encontrar una A(c(k+1)) ∈ Λ(c)
tal que P (k)tA(c(k+1))Q(k) = diag(S∗).
Problema 2. Dada A(c(k+1)) ∈ Λ encontrar X(k+1) ∈ Γ(S∗), tal
que X(k+1) = A(c(k+1)).
Para resolver el primer problema, como se tiene X (k) ∈ Γ(S∗) dada, entonces
existen matrices P (k) y Q(k) tales que
X(k) = P (k)diag(S∗)Q(k)t (2.32)
o bien
diag(S∗) = P (k)tX(k)Q(k). (2.33)
Por otra parte, se puede probar que la tangente a Γ(S∗) en X(k) es de la
forma [Chu92a] [BMX03]
X(k) + X(k)L(k) −H(k)X(k) (2.34)
donde L(k) y H(k) son matrices hemisimetricas.
Para calcular el punto A(c(k+1)) por donde pasa la tangente (2.34), se
resuelve el sistema 2
X(k) + X(k)L(k) −H(k)X(k) = A(c(k+1)) (2.35)
que tiene como incognitas las matrices H (k), L(k) y el vector c(k+1), y que por
(2.32) se puede escribir como
P (k)t(
P (k)diag(S∗)Q(k)t + P (k)diag(S∗)Q(k)tL(k)−
−H(k)P (k)diag(S∗)Q(k)t)
Q(k) = P (k)tA(c(k+1))Q(k),
2El PIAVS requiere de P (k+1)tA(c(k+1))Q(k+1) = diag(S∗). Suponer que P (k+1) y Q(k+1)
se aproximan con P (k)eH(k)y Q(k)eL(k)
(con H(k) y L(k) hemisimetricas) respectivamente.
49
es decir
diag(S∗) + diag(S∗)Q(k)tL(k)Q(k) − P (k)tH(k)P (k)diag(S∗) =
P (k)tA(c(k+1))Q(k),
y si se definen
L(k) = Q(k)tL(k)Q(k),
H(k) = P (k)tH(k)P (k)
y
W (k) = P (k)tA(c(k+1))Q(k), (2.36)
finalmente puede expresarse como el sistema
diag(S∗) + diag(S∗)L(k) − H(k)diag(S∗) = W (k). (2.37)
De la diagonal de (2.37), se obtiene el sistema lineal
J (k)c(k+1) = b(k) (2.38)
donde 3
J(k)i,j = p
(k)ti Ajq
(k)i i = 1, n; j = 1, l
b(k)i = S∗
i − p(k)ti A0q
(k)i i = 1, n
con el que se calcula c(k+1) y por lo tanto A(c(k+1)) y por lo tanto W (k).
De los elementos fuera de la diagonal de (2.37) se calculan H(k) y L(k)
H(k)i,j = −H
(k)j,i = −
W(k)i,j
S∗j
, i = n + 1, m; j = 1, n. (2.39)
Entonces
e−H(k)P (k)tA(c(k+1))Q(k)eL(k)
= diag(S∗)
⇒P (k)tA(c(k+1))Q(k) = eH(k)diag(S∗)e−L(k)
⇒P (k)tA(c(k+1))Q(k) =
I +H(k)
1+
H(k)2
2+ · · ·
!
diag(S∗)
I −L(k)
1+
L(k)2
2+ · · ·
!
⇒P (k)tA(c(k+1))Q(k) ≈ diag(S∗) + H(k)diag(S∗)− diag(S∗)L(k) =
= P (k)tP (k)diag(S∗)Q(k)tQ(k) + H(k)P (k)tP (k)diag(S∗)Q(k)tQ(k) − P (k)tP (k)diag(S∗)Q(k)tQ(k)L(k)
⇒P (k)tA(c(k+1))Q(k) ≈ P (k)tX(k)Q(k) + H(k)P (k)tX(k)Q(k) − P (k)tdiag(S∗)Q(k)L(k)
⇒A(c(k+1)) ≈ X(k) + P (k)H(k)P (k)tX(k) −X(k)Q(k)L(k)Q(k)t
⇒A(c(k+1)) ≈ X(k) + H(k)X(k) −X(k)L(k)
3J y b son iguales que en MI
50
H(k)i,j = −H
(k)j,i =
S∗i W
(k)j,i + S∗
j W(k)i,j
S∗2i − S∗2
j
, i = 1, n; j = i + 1, n; (2.40)
L(k)i,j = −L
(k)j,i =
S∗i W
(k)i,j + S∗
j W(k)j,i
S∗2i − S∗2
j
, i = 1, n; j = i + 1, n. (2.41)
Se pueden ahora calcular
L(k) = Q(k)L(k)Q(k)t
y
H(k) = P (k)H(k)P (k)t
con lo que el sistema (2.35) ha quedado resuelto, y con el el primer problema.
Hay que notar que no es necesario calcular los denominadores de (2.40) y (2.41)
en cada iteracion, por lo tanto, se puede definir la matriz
deno =[S∗2
i − S∗2j
]
i,j=1,n;excepto i=j(2.42)
para calcularlos una sola vez.
Para resolver el segundo problema que consiste en dada A(c(k+1)) calcu-
lar X(k+1), que equivale a calcular P (k+1) y Q(k+1), se necesita encontrar la
interseccion entre Λ(c) y Γ(S∗). Suponiendo que
X(k+1) ≈ A(c(k+1))
y como 4
A(c(k+1)) ≈ e−H(k)
X(k)eL(k)
4Se tiene que
P (k)tA(c(k+1))Q(k) = eH(k)diag(S∗)e−L(k)
⇒A(c(k+1)) = P (k)eH(k)diag(S∗)e−L(k)
Q(k)t ⇒ A(c(k+1)) = e−H(k)P (k)tdiag(S∗)Q(k)eL(k)
.
Tambien se sabe que
eL =
„
I +L
1+
L2
2+ · · ·
«
y
e−H =
„
I −H
1+
H2
2− · · ·
«
entonces
e−H(k)X(k)eL(k)
=
„
I −H
1+
H2
2− · · ·
«
X(k)
„
I +L
1+
L2
2+ · · ·
«
por lo que
e−H(k)X(k)eL(k)
≈ X(k) −H(k)X(k) + X(k)L(k)
que es tangente a Γ(S∗) en X(k). Como la interseccion de la tangente con A(c(k+1)) es
X(k) −H(k)X(k) + X(k)L(k) = A(c(k+1)), entonces
e−H(k)X(k)eL(k)
≈ A(c(k+1)).
51
entonces
X(k+1) ≈ e−H(k)
X(k)eL(k)
. (2.43)
Como e−H(k)
y eL(k)
son costosas de calcular, en su lugar se utiliza (de
manera similar al Method III para el PIVP) la transformacion de Cayley para
aproximarlas a traves de las matrices ortogonales
R(k) =
(
I +H(k)
2
)(
I − H(k)
2
)−1
y
T (k) =
(
I +L(k)
2
)(
I − L(k)
2
)−1
teniendo, en lugar de (2.43), la siguiente expresion
X(k+1) ≈ R(k)tX(k)T (k) = R(k)tP (k)diag(S∗)Q(k)tT (k)
⇒P (k+1)diag(S∗)Q(k+1)t ≈ R(k)tP (k)diag(S∗)Q(k)tT (k)
⇒
P (k+1) = R(k)tP (k)
Q(k+1)t = Q(k)tT (k)
⇒
P (k+1) =(
I − H(k)
2
)−t (
I + H(k)
2
)t
P (k)
Q(k+1)t = Q(k)t(
I + L(k)
2
)(
I − L(k)
2
)−1
⇒
(
I − H(k)
2
)t
P (k+1) =(
I + H(k)t
2
)
P (k)
Q(k+1)t(
I − L(k)
2
)
= Q(k)t(
I + L(k)
2
)
⇒
(
I + H(k)
2
)
P (k+1) =(
I − H(k)
2
)
P (k)
(
I − L(k)
2
)t
Q(k+1) =(
I + L(k)t
2
)
Q(k).
Entonces, para calcular P (k+1) y Q(k+1) basta con resolver los sistemas de
ecuaciones (
I +H(k)
2
)
P (k+1) =
(
I − H(k)
2
)
P (k) (2.44)
(
I +L(k)
2
)
Q(k+1) =
(
I − L(k)
2
)
Q(k) (2.45)
con lo que queda resuelto el segundo problema.
De acuerdo a [Chu92a] y [CBM03] este metodo es cuadraticamente conver-
gente. A diferencia de los metodos desarrollados en las secciones anteriores, este
metodo aproxima en cada iteracion los vectores singulares P (k+1) y Q(k+1), en
lugar de calcularlos exactamente.
52
2.4.1. Algoritmo Secuencial del Metodo III
La cantidad de estructuras de datos que requiere este algoritmo se incremen-
ta por el uso de las matrices hemi-simetricas involucradas, a diferencia de los
algoritmos anteriores, teniendo que definir las siguientes: Ai (i = 0, n), S∗, c∗,
c, ademas de:
A o W matriz de tamano m× n, almacena tanto la matriz A(c) = A0 +∑n
i=1 ciAi, como la matriz W = P tA(c)Q.
P matriz de tamano m×m, almacena P , los m vectores singulares
izquierdos de A(c).
Q matriz de tamano n × n, almacena Q, los n vectores singulares
derechos de A(c).
J matriz de tamano n × n, almacena los coeficientes del sistema
(2.38).
H matriz de tamano m×m, almacena las matrices H y H .
L matriz de tamano n× n, almacena las matrices L y L.
deno matriz de tamano n× n, almacena los denominadores de H y L.
AUX matriz de tamano m×m, auxiliar en la realizacion de operaciones
requeridas en el metodo.
sb vector de tamano n, almacena los valores singulares de A(c) y los
terminos independientes del sistema (2.38).
El monto de memoria requerida, para diferentes tamanos de m = n se pre-
senta en la Tabla 2.17. Estas cantidades pueden manejarse sin problemas para
m ≤ 100.
El algoritmo secuencial de este metodo esta en el Algoritmo 4.
53
Tabla 2.17: Requerimiento de memoria de MIII
Estructuras Numero de elementos de doble precision
Ai=0,n 8.0e+01 1.1e+03 2.8e+04 1.3e+05 1.0e+06 1.3e+08 1.0E+09
A o W,P,Q
J,H, L 1.6e+01 1.0e+02 9.0e+02 2.5e+03 1.0e+04 2.5e+05 1.0E+06
S∗, Sb
c∗, c 4.0e+00 1.0e+01 3.0e+01 5.0e+01 1.0e+02 5.0e+02 1.0E+03
Total
dobles 2.1e+02 1.8e+03 3.4e+04 1.5e+05 1.1e+06 1.3e+08 1.0E+09
Memoria
requerida 1.7 Kb 15 Kb 270 Kb 1.2 Mb 8.6 Mb 1 Gb 8.1 Gb
m = n 4 10 30 50 100 500 1000
Algoritmo 4 Metodo III
1. Calcular A(0) de acuerdo a (2.1)
2. Calcular descomposicion en valores singulares de A(0)
A(0) = P (0)diag(S(0))Q(0)t 3. Calcular deno de acuerdo a (2.42)
4. Para k = 0,1,..., Mientras ‖P (k)tA(k)Q(k) − diag(S∗)‖F > tol
4.1. Calcular J (k) de acuerdo a (2.17)
4.2. Calcular b(k) de acuerdo a (2.20)
4.3. Calcular c(k+1) resolviendo el sistema J (k)c(k+1) = b(k)
4.4. Calcular A(k+1) de acuerdo a (2.1)
4.5. W (k) ← P (k)tA(k+1)Q(k)
4.6. Calcular H(k) de acuerdo a (2.39)- (2.40)
4.7. Calcular L(k) de acuerdo a (2.41)
4.8. H(k) ← P (k)H(k)P (k)t
4.9. L(k) ← Q(k)L(k)Q(k)t
4.10. Calcular P (k+1) resolviendo el sistema(
I + H(k)
2
)
P (k+1) =(
I − H(k)
2
)
P (k)
4.11. Calcular Q(k+1) resolviendo el sistema(
I + L(k)
2
)
Q(k+1) =(
I − L(k)
2
)
Q(k)
2.4.2. Pruebas Numericas del Metodo III
En la Tabla 2.18 estan los resultados de MIII aplicado al caso ChuBai; las
pruebas A y C del caso Bai no alcanzan la solucion c∗, aunque sı alcanzan los
valores singulares deseados S∗, con los errores de la Tabla 2.19. Estas pruebas
no representan ningun problema de convergencia para MIII.
Veanse ahora los resultados de aplicar MIII al caso Gral en la Tabla 2.20
para diferentes puntos iniciales c(0). Se observa que, en cuanto el punto inicial
se va alejando de c∗, los casos de mayor tamano dejan de converger. En la Tabla
54
Tabla 2.18: Resultados del caso ChuBai con MIIIPruebas Chu Calculadas Pruebas Bai Calculadas
casos k c(k) S(k) k c(k) S(k)
A 4 -8.8571e-2 5.2995e0 8 1.6308e0 7.6932e0
5.1462e-1 3.3937e0 4.6572e-1 6.4255e0
-1.0132e0 2.2206e0 9.9241e0 3.8780e0
-8.8725e-1 1.0707e0 7.9056e-1 2.2199e0
B 6 2.3693e0 1.3414e1 4 2.6314e0 1.2159e1
1.6524e0 8.0733e0 1.2748e0 8.3927e0
-1.3027e0 5.0761e0 5.7291e-1 3.8461e0
-9.3529e-1 3.8912e-1 -3.5826e-1 2.4688e0
C 4 8.8169e-1 6.9200e0 7 1.6635e0 1.0321e1
1.3168e0 5.1245e0 -1.1349e0 8.4827e0
-2.5081e-1 3.3331e0 2.2105e0 6.1540e0
-1.5865e-1 1.0240e0 6.6457e-1 1.8127e0
Pruebas Chu Esperadas Pruebas Bai Esperadas
casos c∗ S∗ c∗ S∗
A -8.8571e-2 5.2995e0 1.2541e0 7.6932e0
5.1462e-1 3.3937e0 7.8632e-1 6.4255e0
-1.0132e0 2.2206e0 1.1208e0 3.8780e0
-8.8725e-1 1.0707e0 8.2783e-1 2.2199e0
B 2.3693e0 1.34141e0 2.6314e0 1.2159e1
1.6524e0 8.0733e0 1.2748e0 8.3927e0
-1.3027e0 5.0761e0 5.7291e-1 3.8461e0
-9.3529e-1 3.8912e-1 -3.5826e-1 2.4688e0
C 8.8169e-1 6.9200e0 1.8505e0 1.0321e1
1.3168e0 5.1245e0 -1.4848e0 8.4827e0
-2.5081e-1 3.3331e0 2.0673e0 6.1540e0
-1.5865e-1 1.0240e0 -2.8719e-1 1.8127e0
Tabla 2.19: Errores de ChuBai con MIII
Caso Chu |P (k)tA(k)Q(k) − S∗|F ‖c∗ − c(k)‖2‖c∗−c(k)‖2
‖c∗‖2‖S∗ − S(k)‖2
‖S∗−S(k)‖2‖S∗‖2
A 1e-7 6e-8 4e-8 5e-8 8e-9
B 4e-7 3e-6 9e-7 3e-7 1e-8
C 1e-7 5e-8 3e-8 8e-8 9e-9
Caso Bai |P (k)tA(k)Q(k) − S∗|F ‖c∗ − c(k)‖2‖c∗−c(k)‖2
‖c∗‖2‖S∗ − S(k)‖2
‖S∗−S(k)‖2‖S∗‖2
A 1e-8 5e-1 2e-1 9e-9 8e-10
B 5e-8 1e-8 4e-9 2e-8 1e-9
C 1e-9 1e0 3e-1 1e-9 8e-11
55
2.21 se puede constatar este hecho a traves de los errores alcanzados en el criterio
de parada del algoritmo.
Con MIII se concluye este capıtulo donde se ha presentado el desarrollo
de cuatro algoritmos para la resolucion del PIAVS: FB, MI, EP y MIII. Estos
cuatro algoritmos constituyen cuatro formas diferentes de encarar el PIAVS,
presentando caracterısticas propias con respecto a convergencia, exactitud y re-
querimientos de memoria. Para observar las dos primeras caracterısticas se han
realizado experimentos que indican que FB, MI y MIII, al ser algoritmos tipo
Newton, son sensibles al punto inicial dado, por lo que se consideran algoritmos
de convergencia local, mientras que EP se considera un algoritmo de convergen-
cia global en el sentido 2.31. Con respecto a la exactitud, se ha observado que
MIII alcanza mejores aproximaciones que el resto de los algoritmos, mientras
que EP es el menos exacto.
Por otra parte, los requerimientos de memoria se han estimado haciendo un
recuento de las estructuras de datos que cada algoritmo utiliza, considerando que
estas almacenan flotantes de doble precision. De acuerdo a estas estimaciones es
claro que FB es un algoritmo que demanda mucho almacenamiento, en contraste
con MI y EP que requieren relativamente poco almacenamiento.
Falta por analizar la complejidad de tiempo de ejecucion que se presenta en
el siguiente capıtulo para poder hacer una evaluacion global de los metodos del
PIAVS.
56
Tabla 2.20: Resultados del caso Gral con MIII
c(0)i = c∗i + 1e− 1 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e1 2e-3 3 1e-11 3e-16
5 1e2 1e-3 2 1e-7 2e-12
10 4e2 2e-3 2 3e-7 1e-12
15 1e3 2e-3 3 9e-11 1e-16
20 1e3 2e-3 3 2e-10 2e-16
25 3e3 2e-3 3 1e-9 7e-16
30 4e3 2e-3 3 5e-10 2e-16
40 8e3 1e-3 3 1e-9 2e-16
50 1e4 1e-3 4 1e-9 3e-16
c(0)i = c∗i + 1e0 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e2 2e-2 3 1e-6 3e-11
5 1e3 1e-2 3 8e-10 1e-14
10 4e3 2e-2 3 1e-6 7e-12
15 1e4 2e-2 4 8e-9 1e-14
20 1e4 2e-2 5 3e-10 3e-16
25 3e4 2e-2 5 7e-7 4e-13
30 4e4 2e-2 4 2e-7 1e-13
40 8e4 1e-2 4 1e-9 4e-16
50 1e5 1e-2 10 8e6 1e0
c(0)i = c∗i + 1e1 (i = 1, m)
m = n ‖S(0) − S∗‖2‖S(0)−S∗‖2
‖S∗‖2k ‖S(k) − S∗‖2
‖S(k)−S∗‖2‖S∗‖2
4 8e3 2e-1 5 1e-11 3e-16
5 1e4 1e-1 4 2e-7 3e-12
10 4e4 2e-1 6 1e-8 8e-14
15 1e5 2e-1 10 1e+7 3e1
20 1e5 2e-1 10 3e+6 3e0
25 3e5 2e-1 10 7e+6 4e0
30 4e5 2e-1 10 1e+7 4e0
40 8e5 1e-1 10 1e+8 3e1
50 1e6 1e-1 10 4e+7 7e0
57
Tabla 2.21: Convergencia de MIII para el caso Gral
Errores |P (k)tA(k)Q(k) − S∗|F
m = n c(0)i = c∗i + 1e− 1 c
(0)i = c∗i + 1e0 c
(0)i = c∗i + 1e1
4 6e-12 3e-6 2e-11
5 2e-7 1e-9 2e-7
10 6e-7 3e-6 3e-8
15 1e-10 4e-8 1e7
20 7e-10 2e-10 3e6
25 3e-9 2e-6 7e6
30 8e-10 2e-6 1e7
40 1e-9 1e-9 1e8
50 1e-9 1e7 4e7
58
Capıtulo 3
Implementacion, Analisis y
Evaluacion de los
Algoritmos del PIAVS
En este capıtulo se presentan los detalles de una implementacion eficiente
de los algoritmos disenados en el capıtulo anterior, utilizando rutinas eficientes
y portables de BLAS y LAPACK. Por cada algoritmo presentado se estiman
los tiempos teoricos de ejecucion para analizar los algoritmos desde este punto
de vista. Con esta implementacion se realizan experimentos numericos para
complementar los del capıtulo anterior y dar paso al analisis y evaluacion de
los algoritmos de acuerdo a: complejidad de tiempos de ejecucion, convergencia,
exactitud y requerimientos de memoria.
Los experimentos numericos para este capıtulo se han realizado en un nodo
del cluster Kefren, sobre casos del tipo Gral para las dimensiones: 50 < m <
2000, 50 < n < 400, con puntos iniciales c(0) adecuados para garantizar la
convergencia de los algoritmos.
El capıtulo comienza (Seccion 3.1) con una descripcion detallada de cada
una de las rutinas que utilizan los metodos FB, MI, EP y MIII, como son: el
calculo de A(c), el calculo de las matrices J , JFB, W , Atr, H , L, P y Q, y
el calculo de los vectores b, btr, F y Z. En cada rutina se senalan las rutinas
BLAS y LAPACK que se invocan.
En la Seccion 3.2 se presentan los algoritmos FB, MI, EP y MIII, en los
que se indican tambien las rutinas BLAS y LAPACK que utilizan. Por cada
algoritmo se estima su tiempo de ejecucion secuencial teorico, con base en los
tiempos teoricos que se reportan en la literatura de las rutinas BLAS y LAPACK
y con base en los tiempos teoricos aproximados en este trabajo de las rutinas
descritas en la Seccion 3.1.
59
En la ultima seccion (Seccion 3.3) se presentan el analisis y la evaluacion
antedichos de los algoritmos.
3.1. Detalle de Operaciones de Algoritmos del
PIAVS
Hay pasos que todos los algoritmos realizan, como: el calculo de A (de acuer-
do a (2.1)), la descomposicion en valores singulares de una matriz (svd), la
resolucion de sistemas de ecuaciones lineales y el calculo de normas vectoria-
les (norma-2) o matriciales (norma-Frobenius). Todos estos pasos, excepto el
calculo de A, estan implementados eficientemente en LAPACK y BLAS:
dgesvd LAPACK descomposicion en valores singulares de una matriz (svd)
dgesv LAPACK resolucion de un sistema de ecuaciones lineales
dnrm2 BLAS norma-2 vectorial
dlange LAPACK norma-Frobenius matricial
Para calcular A se ha disenado e implementado una rutina especıfica uti-
lizando como base la rutina daxpy de BLAS (ver Algoritmo 5).
Algoritmo 5 CalculaA
1. A← A0
2. Para i = 1,n
2.1. A← daxpy(m ∗ n, ci, Ai)
Ademas de los pasos en comun, se pueden implementar los pasos propios de
cada algoritmo, tales como el calculo de:
b vector de terminos independientes de MI y MIII, ec. (2.20)
J matriz jacobiana de MI, matriz de coefientes de MIII, ec. (2.17)
Atr matriz de coeficientes de EP (2.28)
btr vector de terminos independientes de EP (2.29)
JFB matriz jacobiana de FB, ecs. (2.11)− (2.15)
F vector de FB, ecs. (2.7), (2.8), (2.9)
W matriz de MIII, ec. (2.36)
P y Q matrices de vectores singulares aproximados de MIII, ecs. (2.44), (2.45)
Z vector de FB, ec. (2.6)
L y H matrices hemisimetricas de MIII, ecs. (2.39), (2.40), (2.41),
utilizando las rutinas LAPACK y BLAS siguientes (α, β detona escalares; x, y
vectores y A, B, C matrices):
60
ddot BLAS xty
dscal BLAS αx
daxpy BLAS αx + y
dgemv BLAS αAx + βy
dgemm BLAS αAB + βC
dgetri LAPACK A−1
Los algoritmos para calcular las matrices y vectores que se han listado arriba
se presentan del Algoritmo 6 al 20, indicando las rutinas BLAS y LAPACK
utilizadas.
En el primero de estos algoritmos, para calcular b, se requiere realizar n pro-
ductos matriz-vector (A0qi) y n productos escalares (piA0qi). Esto es equivalente
a realizar un producto matriz-matriz (A0Q) y n productos escalares (pi(A0Q)i),
que es mas eficiente de implementar. Este proceder se ve en el Algoritmo 6 y se
repite n veces para calcular las n columnas de J en el Algoritmo 7.
Algoritmo 6 Calculab
1. { aux← [A0qi]i=1,n }aux← dgemm(m, n, n, A0, Q)
2. Para k = 1,n
2.1. bi ← ddot(m, pi, auxi)
3. { b← b− S∗ }b← daxpy(n,−1, S∗, b)
4. { b← sAster − b }b← dscal(n,−1, b)
Algoritmo 7 CalculaJ
1. Para k = 1,n
1.1 { aux← [Akqi]i=1,n }aux← dgemm(m, n, n, Ak, Q)
1.2. Para i = 1,n
1.2.1. Ji,k ← ddot(m, pi, auxi)
Para calcular Atr no es necesario calcular la multiplicacion matriz-matriz
AtiAr, pues
Atr = [tr(AtiAr)]r,i=1,n =
n∑
j=1
(Ai)tj(Ar)j
r,i=1,n
,
de este modo es como se disena el Algoritmo 8 y analogamente el Algoritmo 9
que calcula btr.
61
Algoritmo 8 CalculaAtr
1. Para i = 1,n
1.1. Para j = 1,i
1.1.1. Atri,j ← 0
1.1.2. Para k = 1,n
1.1.2.1. Atri,j ← Atri,j + ddot(m, (Aj)k , (Ai)k)
Algoritmo 9 Calculabtr
1. { P ← PS∗ }Para i = 1,n
1.1. P:,i ← dscal(m, S∗i , P:,i)
2. aux← A0
3. aux← dgemm(m, n, n, P, Qt,−aux)
4. Para i=1,n
4.1. btri ← 0
4.2. Para k = 1,n
4.2.1. btri ← btri + ddot(m, Ai:,k , aux:,k)
Mas que calcular la matriz Jacobiana del metodo FB es necesario construirla,
pues requiere de pocas operaciones aritmeticas y de distribucion y replica de
datos en sus entradas . El Algoritmo 10, por lo tanto, consiste escencialmente
de asignaciones que se detallan en los Algoritmos del 11 al 15.
Algoritmo 10 CalculaJFB
1. ren← 1
2. JFB1:n(n+1)/2,1:n2 ← CalculaJ11
3. ren← n ∗ (n + 1)/2 + 1
4. JFBn(n+1)/2+1:n(n+1),n2+1:n2+mn ← CalculaJ22
5. JFBn(n+1):n(n+1)+mn,1:n2 ← CalculaJ31
6. col ← n ∗ n + 1
7. JFBn(n+1):n(n+1)+mn,n2+1:n2+mn ← CalculaJ32
8. col ← n ∗ n + m ∗ n + 1
9. JFBn(n+1):n(n+1)+mn,n2+mn+1:n2+mn+n ← CalculaJ33
62
Algoritmo 11 CalculaJ11
1. Para jj = 1,m
1.1. col← jj
1.2. Para i = 1,m
1.2.1 JFBren,col ← 2 ∗Qi,jj
1.2.2. JFBren+1:ren+n−jj,col ← Qi,jj+1:n
1.2.3. diag(JFBren+1:ren+n−jj,col+1:col+n−jj )← Qi,jj
1.2.4. col ← col + n
1.3. ren← ren + n− jj + 1
Algoritmo 12 CalculaJ22
1. Para jj = 1,n
1.1. col← n ∗ n + jj
1.2. Para i = 1,m
1.2.1. JFBren,col ← 2 ∗ Pi,jj
1.2.2. JFBren+1:ren+n−jj,col ← Pi,jj+1:n
1.2.3. diag(JFBren+1:ren+n−jj,col+1:col+n−jj )← Pi,jj
1.2.4. col ← col + n
1.3. ren← ren + n− jj + 1
Algoritmo 13 CalculaJ31
1. Para i = 1,n
1.1. aux1:m,i ← dscal(m,−S∗i , P1:m,i)
2. salvaren← ren
3. Para i = 1,m
3.1. col← 1
3.2. Para jj = 1,n
3.2.1. JFBren,col:col+n−1 ← auxi,1:n
3.2.2. col ← col + n
3.2.3. ren← ren + 1
Algoritmo 14 CalculaJ32
1. Para i = 1,n
1.1. aux1:n,i ← dscal(n,−S∗i , Q1:n,i)
2. ren← salvaren
3. Para i=1,m
3.1. JFBren:ren+n−1,col:col+n−1 ← aux
3.2. ren← ren + n
3.3. col← col + n
63
Algoritmo 15 CalculaJ33
1. Para i = 1,n
1.1. ren← salvaren
1.2. Para jj = 1,m
1.2.1. JFBren:ren+n−1,col ← Aijj,1:n
1.2.2. ren← ren + n
1.3. col← col + 1
Para calcular F se necesitan realizar multiplicaciones matriz-matriz escen-
cialmente: QtQ−In, P tP −Im y A−Pdiag(S∗)Qt, distribuyendo los resultados
en forma vectorial en F , como en el Algoritmo 16.
Algoritmo 16 CalculaF
1. { aux← QtQ− In }aux← dgemm(n, n, n, Qt, Q,−In)
2. k ← 1
3. { Llena F1:n∗(n+1)/2 }Para i = 1,n
3.1. Fk:k+n−i+1 ← auxi:n,i
3.2. k = k + n− i + 1
4. { aux← P tP − Im }aux← dgemm(m, m, m, P t, P,−Im)
5. { Llena Fn∗(n+1)/2+1:n∗(n+1) }Para i = 1,n
5.1. Fk:k+n−i+1 ← auxi:n,i
5.2. k ← k + n− i + 1
6. { aux← Pdiag(S∗) }aux← dgemm(m, n, n, P, diag(S∗))
7. Calcular A
8. { A← A− Pdiag(S∗)Qt }A← dgemm(m, n, n,−aux, Qt, A)
9. { Llena Fn∗(n+1)+1:mF }Para i = 1,m
9.1. Fk:k+n ← Ai,1:n
9.2. k ← k + n
El Algoritmo 17 calcula tanto W como W t en aux, ya que ambas matrices se
utilizan para calcular las matrices hemisimetricas H y L, que por estar definidas
como:
H(k)i,j = −H
(k)j,i =
S∗i W
(k)j,i + S∗
j W(k)i,j
S∗2i − S∗2
j
, i = 1, n; j = i + 1, n;
64
L(k)i,j = −L
(k)j,i =
S∗i W
(k)i,j + S∗
j W(k)j,i
S∗2i − S∗2
j
, i = 1, n; j = i + 1, n;
pueden expresarse como:
H(k)i,j = −H
(k)j,i =
S∗i W
(k)j,i + S∗
j Wt(k)j,i
S∗2i − S∗2
j
, i = 1, n; j = i + 1, n;
L(k)i,j = −L
(k)j,i =
S∗i W
(k)i,j + S∗
j Wt(k)i,j
S∗2i − S∗2
j
, i = 1, n; j = i + 1, n.
Algoritmo 17 CalculaW
1. W ← dgemm(m, n, m, P t, A)
2. A← dgemm(m, n, n, W, Q)
3. W ← A
4. aux←W t
El Algoritmo 18 que aproxima P (los vectores singulares izquierdos de A)
tambien se utiliza para aproximar Q (para los vectores singulares derechos de
A) sustituyendo P , P+, H , H e Im por Q, Q+, L, L e In, correspondientemente.
65
Algoritmo 18 AproximaP
1. { aux← PH }aux← dgemm(m, m, m, P, H)
2. { H ← −(1/2)PHP t }H ← dgemm(m, m, m,−(1/2)aux, P t)
3. { H ← Im − (1/2)H }Para i=1,m
Hi,i ← 1
4. { aux← (Im − (1/2)H)P }aux← dgemm(m, m, m, H, P )
5. { P ← (Im − (1/2)H)P }P ← aux
6. { aux← Im − (1/2)H }aux← H
7. { aux← −Im + (1/2)H }aux← dscal(m ∗m,−1, aux)
8. { aux← Im + (1/2)H }Para i = 1,m
auxi,i ← 1
9. { Calcula ← lu(Im + (1/2)H) }[L, U ]← dgetrf(m, aux)
10. { Resuelve (Im + H2 )P+ = (Im − H
2 )P }P+ ← dgetrs(m, L, U, P )
Como sol = [Q1,1, Q1,2, ..., Qn,n, P1,1, P1,2, ..., Pm,n, c1, c2, ..., cn] es el paso
calculado por el metodo de Newton y Z representa a P , Q y c, el Algoritmo 19
distribuye los componentes de sol para sumarlos en correspondencia con las
matrices P , Q y con el vector c.
Algoritmo 19 ActulizaZ
{ Z ← Z + sol }1. Para i = 1,n
1.1. Qi,1:n ← daxpy(n, sol(i−1)n+1:in+1, Qi,1:n)
2. Para i = 1,m
2.1. Pi,1:n ← daxpy(n, soln2+(i−1)n+1:n2+in+1, Pi,1:n)
3. c← daxpy(n, soln2+mn+1:n2+mn+n, c)
En el Algoritmo 20 se calculan tanto H como L para provechar que se han
calculado W y W t en aux. En el paso 1.1. y 1.3. se escalan las columnas de W
con S∗ y 1/S∗, como se ilustra en la siguiente figura:
66
H ←
S∗1 S∗
2 S∗3 S∗
4 S∗5
↓ ↓ ↓ ↓ ↓
0 * * * *
* 0 * * *
* * 0 * *
* * * 0 *
* * * * 0
× × × × ×
× × × × ×
↑ ↑ ↑ ↑ ↑
1/S∗1 1/S∗
2 1/S∗3 1/S∗
4 1/S∗5
W
Los pasos 2.1. y 2.3. del mismo algoritmo escalan con S∗ y 1/S∗ los renglores
de W t que esta almacenada en aux y suma el resultado a la matriz H , como en
la siguiente figura:
H ← H+
S∗1 → 0 * * * * × × ← 1/S∗
1
S∗2 → * 0 * * * × × ← 1/S∗
2
S∗3 → * * 0 * * × × ← 1/S∗
3
S∗4 → * * * 0 * × × ← 1/S∗
4
S∗5 → * * * * 0 × × ← 1/S∗
5
W t
Por ultimo, en el paso 3. se dividen los elementos H1:n,1:n por deno, que
tiene el resultado de las diferencias S∗2i − S∗2
j , para i = 1, n; j = 1, n.
67
Algoritmo 20 CalculaHL
1. Para j = 1,n
1.1. { Hi,j = −Hj,i ← S∗j Wi,j i = 1, n; j = i + 1, n }
H1:n,j ← daxpy(n, S∗j , W1:n,j)
1.2. { Li,j = −Lj,i ← S∗j Wj,i i = 1, n; j = i + 1, n }
L1:n,j ← daxpy(n, S∗j , aux1:n,j)
1.3. { Hi,j ← −Wj,i/S∗j i = n + 1, m; j = 1, n }
Hn+1:m,j ← daxpy(m− n,−1/sAsterj , Wn+1:m,j)
2. Para i = 1,n
2.1. { Hi,j = −Hj,i ← S∗j Wi,j + S∗
i Wj,i i = 1, n; j = i + 1, n }Hi,1:n ← daxpy(n, S∗
i , auxi,1:n)
2.2 { Li,j = −Lj,i ← S∗j Wj,i + S∗
i Wi,j i = 1, n; j = i + 1, n }Li,1:n ← daxpy(n, S∗
i , Wi,1:n)
2.3. { Hj,i(= −Hi,j)← −Wi,j/S∗j i = n + 1, m; j = 1, n }
Hi,n+1:m ← daxpy(m− n,−1/S∗i , auxi,n+1:m)
3. Para i = 1,n
3.1. Para j = 1,n
3.1.1. Hi,j ← Hi,j/denoi,j
3.1.2. Li,j ← Li,j/denoi,j
4. diag(H), diag(L)← 0
Con este algoritmo termina el detalle de las operaciones del PIAVS, lo que
da pie a expresar, tambien en detalle, los tiempos teoricos de ejecucion de FB,
MI, EP y MIII, cuya complejidad de tiempo de ejecucion se ha dado en la
Seccion 3.3. Mientras tanto, en la siguiente seccion se realizan experimentos
numericos para complementar los realizados en el capıtulo anterior.
3.2. Algoritmos del PIAVS y Tiempos de Eje-
cucion Teoricos
Para estimar los tiempos teoricos de ejecucion de los algoritmos del PIAVS,
se da una lista de los tiempos de ejecucion las rutinas que se utilizan en ellos,
algunos se encuentran reportados en la literatura [DHvdV93], [BCC97] y otros
se han estimado por los autores de este trabajo:
68
rutina T (n)
ddot 2ntf
dscal ntf
daxpy 2ntf
dnrm2 (2n + 1)tf
dlange (2n2 + 1)tf
dgemv 2n2tf
dgemm 2n3tf
dgesv (2/3)n3tf
dgesvd (38/3)n3tf
CalcularA 2m3tf
A continuacion se presentan los algoritmos FB, MI, EP y MIII, senalando las
rutinas BLAS y LAPACK que se utilizan y los tiempos de ejecucion estimados
(presentados en terminos de orden mayor en la seccion 3.3), donde k denota el
numero de iteraciones que los algoritmos realizan para converger y tf el tiempo
que toma ejecutar una operacion en punto flotante.
FB. Los tiempos de ejecucion de los pasos 4.1., 4.4. y 4.5. del Algoritmo 21 son,
respectivamente:
TJFB(m, n) = (2mn + 2n2)tf
TactualizaZ(m, n) =(mn + n2 + n
)tf
TF (m, n) =(6mn2 + 2m3 + 2n3
)tf .
Algoritmo 21 FB
1. A(0) ← CalculaA(c(0), A0, ..., An)
2. [P (0), S(0), Q(0)]← dgesvd(A(0))
3. F (0) ← CalculaF(c(0), A0, ..., An, P (0), S∗, Q(0))
4. Para k = 0,1,..., Mientras dnrm2(F (k)) > tol
4.1. JFB(k) ← CalculaJFB(S∗, A1, ..., An, P (k), Q(k))
4.2. sol(k) ← dgesv(JFB(k),−F (k))
4.3. [c(k+1), P (k+1), Q(k+1)]← ActualizaZ(c(k), P (k), Q(k), sol(k))
4.4. F (k+1) ← CalculaF(c(k+1), A0, ..., An, P (k+1), S∗, Q(k+1))
Considerando m = n, el tiempo de ejecucion de FB es:
TFB(m) =
(74
3m3 + 4m2 + 2m
)
tf+
+ k
{16
3m6 + 8m5 + 4m4 +
32
3m3 + 10m2 + 3m
}
tf .
El termino de orden superior (O(m6)) corresponde a la resolucion del sistema
de ecuaciones lineales del paso 4.2., dado que manipulan las estructuras de datos
mas grandes del Algoritmo 21: JFB y F .
69
MI. En el Algoritmo 22 las tiempos para calcular b y J son:
Tb(m, n) =(2mn2 + 2mn + 3n
)tf
TJ(m, n) =(2mn3 + 2mn2
)tf .
Algoritmo 22 MI
1. A(0) ← CalculaA(c(0), A0, ..., An)
2. [P (0), S(0), Q(0)]← dgesvd(A(0))
3. Para k = 0,1,..., Mientras dnrm2(S(k) − S∗) > tol
3.1. J (k) ← CalculaJ(A1, ..., An, P (k), Q(k))
3.2. b(k) ← Calculab(A0, P(k), Q(k), S∗)
3.3. c(k+1) ← dgesv(J (k), b(k))
3.4. A(k+1) ← CalculaA(c(k+1), A0, ..., An)
3.5. [P (k+1), S(k+1), Q(k+1)]← dgesvd(A(k+1))
Por lo tanto, el tiempo de ejecucion de MI cuando m = n es:
TMI(m) =
(44
3m3 + 4m
)
tf + k
{
2m4 +58
3m3 + 2m2 + 7m
}
tf .
En este caso el paso mas caro es el calculo de la matriz Jacobiana J y la
eficiencia del algoritmo estara supeditada a este calculo.
EP. Para estimar el tiempo de ejecucion de EP es necesario estimar el del calculo
de Atr y btr (pasos 1., 2. y 4.4. del Algoritmo 23):
TAtr(m, n) =
(
mn3 + mn2 +n3 + n2
2
)
tf
Tbtr(m, n) =(mn + 4mn2 + n2
)tf .
Algoritmo 23 EP
1. Atr ← CalculaAtr(A1, ..., An)
2. Atr ← pdgetri(Atr)
3. parar ← FALSO
4. Para k = 0,1,..., Mientras NO parar
4.1. A(k) ← CalculaA(c(k), A0, ..., An)
4.2. [P (k), S(k), Q(k)]← dgesvd(A(k))
4.3. X(k) ← dgemm(m, n, n, P (k), dgemm(m, n, n, S∗, Q(k)t))
4.4. b(k)tr ← Calculabtr(S∗, A0, P
(k), Q(k))
4.5. c(k+1) ← dgemv(n, n, Atr, b(k)tr )
4.6. Si dnrm2(c(k+1) − c(k)) < tol entonces parar ← V ERDADERO
70
A diferencia de FB y MI, que tienen el paso mas costoso dentro del ciclo,
EP lo tiene antes del ciclo en el calculo de Atr, lo que se refleja en su tiempo de
ejecucion estimado:
TEP (m) =
(
m4 +7
2m3 +
m2
2
)
tf + k
{56
3m3 + 4m2 + 4m
}
tf ,
cuando m = n.
MIII. Por ultimo, los tiempos de ejecucion de los pasos 4.5., 4.6. y 4.7. del
Algoritmo 24 son:
TW (m, n) =(2mn2 + 2m2n
)tf
THL(m, n) =(4mn + 6n2
)tf
TP (m) =
(26
3m3 + m2
)
tf
Algoritmo 24 MIII
1. A(0) ← CalculaA(c(0), A0, ..., An)
2. [P (0), S(0), Q(0)]← dgesvd(A(0))
3. denoi,j ←[S∗2
i − S∗2j
]
i,j=1,n;excepto i=j
4. Para k = 0,1,..., Mientras dlange(P (k)tA(k)Q(k) − diag(S∗)) > tol
4.1. J (k) ← CalculaJ(A1, ..., An, P (k), Q(k))
4.2. b(k) ← Calculab(A0, P(k), Q(k), S∗)
4.3. c(k+1) ← dgesv(J (k), b(k))
4.4. A(k+1) ← CalculaA(c(k+1), A0, ..., An)
4.5. W (k) ← CalculaW(P (k), Q(k), A(k+1))
4.6. [H(k), L(k)]← CalculaHL(S∗, W, deno)
4.7. P (k+1) ← AproximaP(P (k), H(k))
4.8. Q(k+1) ← AproximaQ(Q(k), L(k))
El paso 4.8. tiene el mismo costo que TP , sustituyendo m por n. Por lo tanto,
el tiempo de ejecucion de MIII, tomando m = n es:
TMIII(m) =
(53
3m3 +
11
2m2 − 3
2m
)
tf + k{2m4 + 31m3 + 18m2 + 3m
}tf .
Como MIII comparte el calculo de J con MI, el paso mas costoso de MIII
es el paso 4.1. que se ejecuta con cada iteracion.
Con todos estas estimaciones de tiempos de ejecucion se tiene otro parametro
de comparacion de los algoritmos del PIAVS. FB es el algoritmo con mas costo
computacional, mietras que EP tiene el menor costo por iteracion, sin embargo,
en los experimentos realizados EP requiere muchas iteraciones para converger
que el resto de los algoritmos. Entonces, los tiempos de ejecucion no estan
71
supeditados solamente al tamano del problema (m) sino tambien al numero de
iteraciones (k).
Estimar los tiempos de ejecucion tambien ayuda a identificar las secciones
mas costosas de cada algoritmo, permitiendo centrar la atencion en ellas para
valorar si el algoritmo es susceptible de mejora. En los algoritmos que se manejan
en este trabajo, dado que se han hecho estimaciones de tiempos suponiendo
el empleo de rutinas eficientes, es difıcil, en primera instancia, vislumbrar una
mejora sustancial que disminuya la complejidad de tiempo, quedando por aplicar
alternativas de solucion con en el empleo de la programacion paralela para
distribuir la carga de trabajo en un conjunto de procesadores, que es el tema
del Capıtulo 4.
3.3. Analisis y Evaluacion de los Algoritmos Se-
cuenciales del PIAVS
En esta seccion se contrastan los algoritmos FB, MI, EP y MIII, de acuerdo
a diversos aspectos, como: cantidad de almacenamiento requerido, convergencia,
exactitud, criterios de parada, numero de iteraciones requeridas y tiempos de
ejecucion, a traves de estimaciones y con ayuda de los resultados arrojados por
los experimentos realizados.
3.3.1. Requerimientos de Memoria
En sı mismo el PIAVS es un problema que requiere grandes cantidades de
memoria para almanecar, al menos, n + 1 matrices de tamano m × n (Ai, i =
0, n) y dos vectores de tamano n (S∗, c); a esto hay que anadir las matrices y
vectores propios de cada algoritmo (para almacenar valores y vectores singulares,
matrices jacobianas, matrices hemisimetricas, etc.). Haciendo una estimacion de
la cantidad de Kbytes necesarios para cada algoritmo, se obtienen los siguientes
datos:
m = n 4 10 30 50 100 500 1000
FB 12 366 20000 205000 4.0e6 2.0e9 3.2e10
MI 1.2 12 250 1100 8.3e3 1.0e6 8.0e3
EP 1.2 12 250 1100 8.3e3 1.0e6 8.0e3
MIII 1.7 15 270 1200 8.6e3 1.0e6 8.1e3
Facilmente se observa que FB requiere mucho mas memoria que el resto
de los algoritmos, siendo poco factible de implementar para experimentos de
tamanos mayores a 50. Los mejores algoritmos en este aspecto son MI y EP.
72
3.3.2. Convergencia
En los experimentos numericos realizados se ha reflejado el caracter new-
toniano de todos los metodos, excepto EP, con respecto a la sensibilidad a los
puntos iniciales c(0) dados a los algoritmos; en la siguiente relacion se resumen
estos comportamientos para diferentes puntos iniciales c(0)i = c∗i + δ (i = 1, n).
δ 1e− 1 1e0 1e1
FB converge converge para m < 50 converge para m ≤ 10
MI converge converge para m < 50 converge para m ≤ 10
EP converge converge converge
MIII converge converge para m < 50 converge para m ≤ 10
Se ha observado que, cuando c(0) es cercano a la solucion, ningun algoritmo
tiene problemas de convergencia, pero en cuanto c(0) se aleja de la solucion los
algoritmos convergen para tamanos de problema (m, n) cada vez mas pequenos.
EP es el algoritmo que mejores caracterısticas de convergencia tiene, dado que
se ha demostrado que converge en el sentido (2.31).
Los criterios con los que se determina que un algoritmo ha convergido son:
FB ‖S(k) − S∗‖2 < tol
MI ‖S(k) − S∗‖2 < tol
EP ‖c(k) − c(k−1)‖2 < tol
MIII ‖P (k)tA(k)Q(k) − S∗‖F < tol
de ellos el menos costoso de calcular y mas facil de alcanzar es el de EP, aunque
con este podrıa convergerse no necesariamente a c∗ y no se involucra en absoluto
a S∗; mientras que el criterio mas costoso, ya que deben calcularse no solo los
valores sino tambien los vectores singulares de A(k), al menos aproximadamente,
donde no se involucra c∗, pero sı S∗, es el de MIII.
Aunque EP es un algoritmo que siempre converge, su punto debil se encuen-
tra en la cantidad de iteraciones y la calidad de la solucion calculada, como se
vera en los siguientes parrafos.
3.3.3. Exactitud de la solucion
Ahora se contrasta la calidad de la solucion dada por cada algoritmo para
los mismos casos experimentales, de los cuales se han tomado aquellos en los
que todos los algoritmos convergen (con c(0)i = c∗i +1e−1, i = 1, n). Para medir
la calidad, se toman los errores relativos de los valores singulares calculados con
respecto a los deseados: ‖S(k)−S∗‖2
‖S∗‖2, y no los errores con respecto a c(k) y c∗,
debido a que el PIAVS puede tener mas de una solucion:
73
m = n FB MI EP MIII
4 1.21e-16 1.15e-10 1.17e-07 3.05e-16
5 2.35e-12 2.37e-12 4.68e-08 2.34e-12
10 1.67e-16 1.23e-12 6.80e-08 1.74e-12
15 1.90e-16 1.59e-16 1.87e-07 1.99e-16
20 1.18e-16 6.33e-16 1.42e-07 2.75e-16
25 1.26e-15 8.89e-16 1.79e-07 7.72e-16
30 5.41e-16 4.29e-16 1.13e-07 2.57e-16
40 2.35e-16 2.44e-16 6.43e-08 2.39e-16
50 1.76e-14 2.23e-13 6.66e-08 3.11e-16
EP es el menos exacto de los algoritmos y en la mayorıa de los casos MIII
es el que aproxima mejor a los valores singulares deseados.
3.3.4. Estimacion de la complejidad de tiempo y tiempos
de ejecucion
La estimacion de la complejidad de tiempo esta en funcion del tamano del
problema (m,n) y del numero de iteraciones para converger (k); para los algo-
ritmos que se presentan en este trabajo, esta estimacion puede dividirse en el
costo de la fase de inicio (T (m, n)inicio) y el costo de cada iteracion dentro del
ciclo (T (m, n)ciclo), de modo que la complejidad de tiempo es
T (m, n, K) = T (m, n)inicio + kT (m, n)ciclo.
Entonces, la estimacion para cada metodo (para m = n) puede expresarse
como:
T (m, k)FB ≈ (62/3)m3 + O(m2) + k{(16/3)m6 + O(m5)}
T (m, k)MI ≈ (44/3)m3 + O(m) + k{2m4 + O(m3)}
T (m, k)EP ≈ m4 + O(m3) + k{(56/3)m3 + O(m2)}
T (m, k)MIII ≈ (53/3)m3 + O(m2) + k{2m4 + O(m3)}
La estimacion de FB muestra que es el algoritmo mas costoso de todos.
Por otra parte, EP tiene la estimacion menos costosa en la parte iterativa, pero
necesita mas iteraciones para converger que el resto de los algoritmos. Esto puede
verificarse en la siguiente tabla donde se muestra k, el numero de iteraciones
que necesitan los algoritmos para converger en experimentos con δ = 1e− 1:
m = n 4 5 10 15 20 25 30 40 50
FB 3 2 3 3 3 3 3 3 3
MI 2 2 2 3 3 3 3 3 3
EP 365 206 561 3398 2629 1998 4048 6304 5303
MIII 3 2 2 3 3 3 3 3 4
74
y en la siguiente figura se muestran los tiempos de ejecucion correspondientes a
los mismos experimentos:
0 5 10 15 20 25 30 35 40 45 5010−2
10−1
100
101
102
103
m=n
Tiem
pos
de e
jecu
ción
(Seg
)
FB MI EP MIII
donde se verifica que LP requiere mas tiempo de ejecucion, mientras que MI es
el mas eficiente y el que requiere menos iteraciones.
3.3.5. Conclusiones
Se han disenado y analizado un conjunto de algoritmos para resolver el
PIAVS. Los resultados experimentales dados en [Chu92a] y [BMX03] para
resolver el PIAVS corresponden a matrices de tamano 5 × 4, por lo que se ha
experimentado con matrices de mayor tamano.
Lo que se observa en este estudio es que FB es un algoritmo de alto coste,
tanto por las dimensiones de las estructuras de datos que maneja (O(m4)), como
por la cantidad de calculos requeridos para operar con ellas (O(m6)).
Desde el punto de vista espacial MI y EP son los de menores requerimientos
de memoria y desde el punto de vista temporal MI es el mas eficiente. La mas
alta exactitud de las soluciones, en la mayorıa de los casos probados, se alcanza
con MIII.
El inconveniente mas importante de MI y MIII, que es un inconveniente mas
de FB, es la sensibilidad que tienen al punto inicial para converger, que se agraba
conforme m aumenta su tamano. En cambio, EP no observa este problema.
Para ilustrar las ventajas e inconvenientes de los algoritmos en una tabla, se
ha asociado un valor del intervalo [1,4] (1=alta valoracion, 4=baja valoracion),
a cada caracterıstica de los algoritmos, que de acuerdo a los experimentos rea-
lizados se obtiene lo siguiente:
Memoria Convergencia Exactitud Iteraciones Tiempo de ejecucion
FB 3 2 3 1 3
MI 1 2 2 1 1
EP 1 1 4 3 4
MIII 2 2 1 2 2
75
En terminos generales, los algoritmos que mejor equilibran los diferentes
aspectos son MI y MIII.
Los algoritmos que se han implementado trabajan con matrices Ai (i = 0, n)
de estructura general. El manejo de matrices estructuradas conlleva un rediseno
de los algoritmos para explotar la estructura y aminorar los costos de calculo y
almacenamiento, tema que se aborda en el capıtulo 5.
Aplicar estos algoritmos a problemas de mayor tamano (m > 50) implica
lidiar con altos costos de almacenamiento y ejecucion. Una forma de solventar
los problemas de memoria es manteniendo las estructuras de datos almacenadas
en memoria secundaria y tenerlas en memoria principal solamente cuando se
accedieran. Otra forma, que tambien solventarıa el alto costo de ejecucion, es
paralelizando los algoritmos, de modo que cada procesador involucrado alma-
cenara solamente una parte de las estructuras de datos y ejecutara parte de
los calculos del algoritmo. La paralelizacion de los algoritmos es el tema del
siguiente capıtulo.
76
Capıtulo 4
Algoritmos Paralelos para
la Resolucion del PIAVS
El diseno, la experimentacion numerica y la evaluacion de los algoritmos
paralelos de los metodos que resuelven el PIAVS se presentan en este capıtulo. La
paralelizacion de estos metodos tiene como fin poder aplicarlos para tamanos de
problema grandes (para valores de m del orden de O{102, 103}) y disminuir los
costos de ejecucion y almacenamiento que, como se vio en el Capıtulo anterior,
son muy altos.
La paralelizacion realizada esta en funcion del entorno paralelo selecciona-
do: distribucion de matrices y vectores por bloques en mallas logicas de proce-
sadores, ejecucion de un mismo conjunto de instrucciones sobre diferentes con-
juntos de datos en las unidades de procesamiento y empleo del modelo de paso
de mensajes entre las unidades de procesamiento.
Una buena parte de las operaciones de los algoritmos del PIAVS pueden pa-
ralelizarse utilizando directamente rutinas de ScaLAPACK, PBLAS y BLACS;
otras son paralelizables disenando rutinas especıficas que se basan en llamadas
a rutinas del mismo ScaLAPACK, de LAPACK, BLAS, PBLAS y BLACS (in-
clusive de MPI).
La primera tarea en este capıtulo (Seccion 4.1) es detallar los disenos pa-
ralelos de las operaciones que conforman a los algoritmos FB, MI, EP y MIII,
especificando las rutinas utilizadas. En la Seccion 4.2 se presentan los algoritmos
paralelos de FB, MI, EP y MIII y se estiman los tiempos de ejecucion teoricos
de cada uno. Posteriormente, en la Seccion 4.3 se reportan tiempos de ejecucion
de experimentos realizados, analizando y constrastando las pretaciones que de
estos experimentos se obtegan.
77
4.1. Paralelizacion de Operaciones de Algorit-
mos del PIAVS
Los algoritmos paralelos del PIAVS trabajan con estructuras de datos cuya
distribucion sigue la convencion establecida por ScaLAPACK. Ası, todas las es-
tructuras de datos: A0, A1, ..., An, A, c, S∗, los vectores singulares (P , Q), matri-
ces hemisimetricas (H , L), matrices jacobianas (JFB, J), vectores de terminos
independientes (b, btr, F ) y matrices de coeficientes (Atr) se han particionado
en bloques y distribuido cıclicamente en una malla logica de procesadores de
Prc = Pr × Pc procesadores (Pr renglones y Pc columnas). Para evitar al maxi-
mo las comunicaciones entre nodos, S∗ y c tambien se han replicado en cada
procesador. Por lo tanto, en cada nodo de procesamiento se manejan matrices
y vectores con los siguientes tamanos locales (resultado de dividir la dimension
global de la estructura por el numero de procesadores):
Estructura Dimension global Dimension local
A, Ai (i = 0, n) m× n m/Pr × n/Pc
P, H m×m m/Pr ×m/Pc
Q, Atr, L, J n× n n/Pr × n/Pc
JFB (mn + n2 + n)× (mn + n2 + n)/Pr×(mn + n2 + n) (mn + n2 + n)/Pc
c, b, btr m m/Pr
F mn + n2 + n (mn + n2 + n)/Pr
Al igual que en el caso secuencial, las operaciones comunes a todos los algo-
ritmos, excepto el calculo de A, estan paralelizadas en rutinas de ScaLAPACK
y PBLAS:
pdgesvd, ScaLAPACK, svd de una matriz
pdgesv, ScaLAPACK, resolucion de un sistema de
ecuaciones lineales
pdnrm, PBLAS, norma-2 vectorial
pdlange, ScaLAPACK, norma-Frobenius matricial.
La paralelizacion del calculo de A esta en el Algoritmo 25. Notese que este
algoritmo no tiene comunicaciones entre nodos, al estar c replicada.
Algoritmo 25 ParaleloCalculaA
1. A← A0
2. Para i = 1,n
2.1. A← daxpy( mPr∗ n
Pc, ci, Ai)
Otras rutinas utilizadas en las paralelizacion de los algoritmos del PIAVS
son:
78
Rutinas Aritmeticas de PBLAS y ScaLAPACK (con escalares α, β replicados;
vectores x, y y matrices A, B, C distribuidas en los procesadores):
pddot PBLAS xty
pdscal PBLAS αx
pdaxpy PBLAS αx + y
pdgemv PBLAS αAx + βy
pdgemm PBLAS αAB + βC
pdlaset ScaLAPACK asigna valores a la triangular
superior o inferior de una matriz
pdgetri ScaLAPACK, A−1
Rutinas de comunicaciones y redistribucion de datos de MPI, BLACS y ScaLA-
PACK:
MPI REDUCE MPI reduce valores de todos los procesadores
a un solo valor en un solo procesador
(comunicacion todos a uno)
dgesd2d,dgerv2d BLACS envıo-recepcion de datos punto a punto
dgebs2d,dger2d BLACS dispersion de datos (envıo uno a todos
o broadcast)
dgsum2d BLACS suma componente a componente matrices
almacenadas en diferentes procesadores
replicando el resultado en todos ellos
pdgemr2d ScaLAPACK redistribuye un vector de datos
pdelset ScaLAPACK asigna un valor a un componente
de una matriz distribuida
A continuacion se paralelizan las rutinas de FB, MI, EP y MIII, detallando
algorıtmicamente la paralelizacion y esquematizandola cuando sea necesario.
4.1.1. Paralelizacion de rutinas necesarias para FB
Primero se presenta la paralelizacion de las operaciones medulares del al-
goritmo FB, como son: calculo del vector F , de la matriz Jacobiana JFB y
actualizacion del vector Z = [Q, P, c].
Paralelizar el calculo de JFB implica mover elementos de Q, P y Ai (i =
1, n) a posiciones especıficas de JFB. Se ilustran, por ejemplo, los movimientos
de elementos de Q para la construccion de los bloques JFB11 y JFB3,2. Cada
elemento de Q, qi,j (i = 1, n; j = 1, n) se dispersa en la malla de procesadores
y estos lo colocan en la posicion de JFB requerida (con previa multiplicacion
por 2 o por S∗j , segun sea el caso) . Para construir las columnas de JFB11
simplemente se utiliza la rutina de PBLAS pdcopy y para construir los elementos
79
diagonales se utiliza la rutina pdlaset de ScaLAPACK. De forma analoga a Q se
redistribuyen los elementos de P en JFB22 y JFB31. Finalmente, para construir
JFB33 se vuelve a hacer uso de pdlacpy.
La paralelizacion del calculo de F requiere calcular A, realizar cuatro mul-
tiplicaciones matriz-matriz distribuidas (pdgemm) y redistribuir los resultados
en F (pdcopy) (Algoritmo 26).
Algoritmo 26 ParaleloCalculaF
1. k ← 1
2. { aux← QtQ− In }aux← pdgemm(n, n, n, Qt, Q,−In)
3. { Llena F1:n∗(n+1)/2, comunicando n2 datos }Para i = 1,n
a. Fk:k+n−i+1 ← pdcopy(n− i + 1, auxi:n,i)
b. k ← k + n− i + 1
4. { aux← P tP − Im }aux← pdgemm(m, m, m, P t, P,−Im)
5. { Llena Fn∗(n+1)/2+1:n∗(n+1), comunicando n2 datos }Para i = 1,n
5.1. Fk:k+n−i+1 ← pdcopy(n− i + 1, auxi:n,i)
5.2. k ← k + n− i + 1
6. { aux← Pdiag(S∗) }aux← pdgemm(m, n, n, P, diag(S∗))
7. A← ParaleloCalculaA(c(k), A0, ..., An)
8. { A← A− PS∗Qt }A← pdgemm(m, n, n,−aux, Q, A)
9. { Llena Fn∗(n+1)+1:mF , comunicando mn datos }Para i=1,m
9.1. Fk:k+n ← pdcopy(n, Ai,1:n)
9.2. k ← k + n
Para actualizar Z en paralelo se tiene el Algoritmo 27. Como c debe con-
tenerla todo procesador, se construye completamente en el procesador 0 (paso
3) para que este lo disperse al resto de procesadores.
80
Algoritmo 27 ParaleloActualizaZ
1. Para i = 1,n
1.1. Qi,1:n ← pdaxpy(n, sol(i−1)n+1:in+1, Qi,1:n)
2. Para i = 1,m
2.1. Pi,1:n ← pdaxpy(n, soln2+(i−1)n+1:n2+in+1, Pi,1:n)
3. { Redistribuir el subvector de sol correspondiente a c
de modo que el procesador 0 lo contenga completamente en aux }aux← pdgemr2d( n
Pr, Fn2+mn+1:n2+mn+n)
4. { Replicar c (aux) en todos los procesadores, realizando una
dispersion uno a todos de un mensaje de longitud n }Si procesador 0 entonces { enviar }
c← daxpy(n, aux, c)
dgebs2d(′All′, n, c)
Sino { recibir }c← dger2d(′All′, n, c)
4.1.2. Paralelizacion de rutinas necesarias para MI
Para paralilizar MI hay que paralelizar escencialmente dos procesos: el calcu-
lo de la matriz Jacobiana J y el vector de terminos independientes b. Ası como
en el caso secuencial, en el calculo paralelo de J no es necesario realizar n multi-
plicaciones matriz-vector distribuidas para calcular Ajqi, para j = 1, n; es mas
eficiente realizar una sola multiplicacion matriz-matriz distribuida AQ para te-
ner el mismo resultado. La matriz resultante se multiplica columna a columna
con P utilizando el producto escalar (pti(Ajqi) = pt
i(AjQ)i para i = 1, n) y
se hace uso de la herramienta pdelset de ScaLAPACK para colocar el resul-
tado del producto escalar en el correspondiente componente de J (Ji,j). Este
procedimiento se describe en el Algoritmo 28.
Algoritmo 28 ParaleloCalculaJ
1. Para j = 1, n
1.1. aux← pdgemm(m, n, n, Aj, Q)
1.2. Para i = 1, m
1.2.1. prodEsc← pddot(m, pi, auxi)
1.2.2. Ji,j ← pdelset(prodEsc)
La paralelizacion del calculo de b obedece a la misma idea de calcular una
columna de J , sustituyendo la matriz Aj con A0, como se ve en el Algoritmo 29.
81
Algoritmo 29 ParaleloCalculab
1. aux← pdgemm(m, n, n, Aj , Q)
2. Para i = 1, m
2.1. prodEsc← pddot(m, pi, auxi)
2.2. bi ← pdelset(prodEsc)
2.3. b← pdscal(m,−1,0d0, b)
2.4. { b← S∗ − b }b← pdaxpy(m, S∗, b)
4.1.3. Paralelizacion de rutinas necesarias para EP
Los algoritmos a paralelizar en EP son el calculo de la matriz de coefientes
Atr y el del vector de terminos independientes btr. En el calculo paralelo de Atr
intervienen todos los procesadores porque cada Ai (i = 0, n) esta distribuida
en la malla logida de procesadores. Ası, para realizar los calculos con Ai y
Aj , cada procesador realiza el producto escalar de las columnas de Ai con Aj
que tiene almacenadas, obteniendo un resultado parcial de Atrji. Mediante dos
operaciones de reduccion y suma, el resultado de la suma de todos los resultados
parciales se coloca en las posiciones (i, j) y (j, i) de Atr. Esta operacion se realiza
para cada par de componentes (i, j) y (j, i) de Atr (ver Algoritmo 30).
Algoritmo 30 ParaleloCalculaAtr
1. Para i = 1,n
1.1. Para j = 1,i
1.1.1. tr ← 0
1.1.2. Para k = 1,n/Pc
1.2.2.1. tr ← tr + ddot(n/Pr, Aj:,k , Ai:,k )
1.1.3. { Reduccion−Suma de tr de todos los procesadores al
procesador Proc que tiene el componente (i, j) de Atr }Atri,jP roc
←MPI ReduceSum(1,tr,Proc)
btr se paraleliza con los mismos criterios que Atr (ver Algoritmo 31).
82
Algoritmo 31 ParaleloCalculabtr
1. { P ← PS∗ }Para i = 1,n/Pc
1.1. P:,i ← dscal(n/Pr, sAsteri, P:,i)
2. aux← A0
3. aux← pdgemm(m, n, n, P, Qt,−aux)
4. Para i=1,n
4.1. tr ← 0
4.2. Para k = 1,n/Pc
4.2.1. tr ← tr + ddot(n/Pr , Ai:,k , aux:,k)
4.3. { Reduccion−Suma de tr de todos los procesadores
al procesador Proc que tiene el componente i de btr }btriP roc
←MPI ReduceSum(1,tr,Proc)
4.1.4. Paralelizacion de rutinas necesarias para MIII
Las operaciones a paralelizar en MIII son: el calculo de W , H y L y la
actualizacion de P y Q. El calculo paralelo de W es muy sencillo, se deja toda
la tarea a rutinas de PBLAS (ver Algoritmo 32).
Algoritmo 32 ParaleloCalculaW
1. W ← pdgemm(m, n, m, P t, A)
2. A← pdgemm(m, n, n, W, Q)
3. W ← A
4. {aux←W t}Para j = 1,n
4.1. auxj,1:m ← pdcopy(m, W1:m,j)
La paralelizacion de la aproximacion de P y Q tambien es sencilla, el algorit-
mo se limita a realizar las correspondientes llamadas de BLAS en PBLAS (ver
Algoritmo 33). Como se ha visto antes, aproximar Q es analogo a aproximar P .
83
Algoritmo 33 ParaleloAproximaP
1. { aux← PH }aux← pdgemm(m, m, m, P, H)
2. { H ← −(1/2)PHP t }H ← pdgemm(m, m, m,−(1/2)aux, P t)
3. { H ← Im − (1/2)H }Para i=1,m
3.1. El procesador que almacena Hi,i global ejecuta: Hilocal,ilocal ← 1
4. { aux← (Im − (1/2)H)P }aux← pdgemm(m, m, m, H, P )
5. { P ← (Im − (1/2)H)P }P ← aux
6. { aux← Im − (1/2)H }aux← H
7. { aux← −Im + (1/2)H }aux← dscal(ldA ∗ nqP,−1, aux)
8. { aux← Im + (1/2)H }Para i = 1,m
8.1. El procesador que almacena auxi,i global ejecuta: auxilocal,ilocal ← 1
9. { Calcula lu(Im + (1/2)H) }[L, U ]← pdgetrf(m, aux)
10. { Resuelve (Im + H2 )P+ = (Im − H
2 )P }P+ ← pdgetrs(m, L, U, P )
En el calculo de H y L no hay necesidad de comunicar datos entre proce-
sadores, ya que las operaciones con las estructuras de datos que estan dis-
tribuidas en ellos se realizan operaciones componente a componente, por estos
motivos se han disenado algoritmos paralelos que calculen tanto W como W t.
El algoritmo correspondiente es el Algoritmo 34.
84
Algoritmo 34 ParaleloCalculaHL
1. Para j = 1,n/Pc
1.1. { Hi,j = −Hj,i ← S∗j Wi,j i = 1, n; j = i + 1, n }
H1:n/Pr ,j ← daxpy(n/Pr, S∗jglobal, W1:1/Pr ,j)
1.2. { Li,j = −Lj,i ← S∗i Wi,j i = 1, n; j = i + 1, n }
L1:n/Pr,j ← daxpy(n/Pr, S∗jglobal, aux1:n/Pr,j)
1.3. { Hi,j ← −Wi,j/S∗j i = n + 1, m; j = 1, n }
Hn/Pr+1:m/Pr,j ← daxpy(m/Pr − n/Pr,−1/S∗jglobal, Wn/Pr+1:m/Pr ,j)
2. Para i = 1,n/Pr
2.1. { Hi,j = −Hj,i ← S∗i Wj,i + S∗
j Wi,j i = 1, n; j = i + 1, n }Hi,1:n/pc
← daxpy(n/Pc, S∗iglobal, auxi,1:n/Pc
)
2.2. { Li,j = −Lj,i ← S∗i Wi,j + S∗
j Wj,i i = 1, n; j = i + 1, n }Li,1:n/Pc
← daxpy(n/Pc, S∗iglobal, auxi,1:n/Pc
)
2.3. { Hj,i ← Wi,j/S∗j i = n + 1, m; j = 1, n }
Hi,n/Pc+1:m/Pc← daxpy(m/Pc − n/Pc,−1/S∗
iglobal, auxi,n/Pc+1:m/Pc)
3. Para i = 1,n/Pr
3.1. Para j = 1,n/Pc
3.1.1. Hi,j ← Hi,j/denoi, j
3.1.2. Li,j ← Li,j/denoi, j
La paralelizacion del calculo de b y J ya se han visto en MI.
Con esta rutina se termina el desarrollo de rutinas paralelas de los pasos de
los metodos del PIAVS. A continuacion se presentan los algoritmos paralelos de
FB, MI, EP y MIII y se estiman los tiempos de ejecucion teoricos de cada uno.
4.2. Algoritmos Paralelos para el PIAVS y Tiem-
pos de Ejecucion Teoricos
Para estimar los tiempos de ejecucion de las algoritmos paralelos disenados,
se da una lista de los tiempos de ejecucion de las rutinas paralelas aritmeticas
de ScaLAPACK y PBLAS utilizadas [KGGKrp94], [CDD+95], [BCC97], con-
siderando matrices de dimension m×m y vectores de dimension m (recordar que
tf detona el tiempo de ejecucion para operar con un flotante, tm es la latencia y
tv es el tiempo de transferencia de un dato entre dos nodos de procesamiento):
pdgesvd (ScaLAPACK)
T (m, Prc) =38
3
m3
Prctf + 17mtm +
14m2log2Prc√Prc
tv
pdgesv (ScaLAPACK)
T (m, Prc) =2
3
m3
Prctf + (6 + log2Prc) mtm +
(
3 +log2Prc
4
)m2
√Prc
tv
85
pddot (PBLAS)
T (m, Prc) =2m
Prctf + 2(
√
Prc − 1)tm + tv
pdaxpy (PBLAS)
T (m, Prc) =m√Prc
tf + tm +Pr + Pc
2
m√Prc
tv
pdgemv (PBLAS)
T (m, Prc) =m2
Prctf + 2
√
Prctm + 3mtv
pdgemm (PBLAS)
T (m, Prc) =2m3
Prctf + m(log2Pc + log2Pr)tm+
+
(
log2Pcm2
Pr+ log2Pr
m2
Pc
)
tv
ParaleloCalculaA
T (m, Prc) =2m3
Prctf
Tambien se listan los tiempos de ejecucion estimados de las rutinas de co-
municacion utilizadas, considerando la comunicacion de un mensaje de longitud
m [KGGKrp94]:
Comunicacion Punto a Punto (dgesd2d-dgerv2d (BLACS), pdelset (ScaLA-
PACK))
T (m, Prc) = tm +Pr + Pc
2mtv
Comunicacion Uno a Todos o Dispersion (dgebs2d-dgebr2d (BLACS))
T (m, Prc) =
(Pr + Pc
2+ 1
)
(tm + mtv)
Comunicacion Todos a Uno o Reduccion (pdgemr2d1(ScaLAPACK))
T (m, Prc) =
(Pr + Pc
2+ 1
)
(tm + mtv)
Reduccion con Suma (MPI REDUCE)
T (m, Prc) =
(Pr + Pc
2+ 1
)
mtf +
(Pr + Pc
2+ 1
)
(tm + mtv)
Comunicacion Todos a Todos
T (m, Prc) = (Pr + Pc − 2) (tm + mtv)
1Aunque pdgemr2d se utiliza en general para redistribuir una matriz en una malla de
procesadores, en este trabajo se utiliza para una sola redistribucion especıfica: construir el
vector global c en el procesador 0 del vector distribuido c
86
Comunicacion Todos a Todos con suma (dgsum2d (BLACS)
T (m, Prc) = (Pr + Pc − 2) mtf + (Pr + Pc − 2)(tm + mtv)
A continuacion se presentan los algoritmos paralelos de FB, MI, EP y MIII y
la estimacion de sus tiempos de ejecucion con base en los tiempos arriba listados.
FB Paralelo. La paralelizacion de FB esta en el Algoritmo 35.
Algoritmo 35 FBParalelo
1. A(0) ← ParaleloCalculaA(c(0), A0, ..., An)
2. [P (0), S(0), Q(0)]← pdgesvd(A(0))
3. F (0) ← ParaleloCalculaF(c(0), A0, ..., An, P (0), S∗, Q(0))
4. error ← pdnrm2(F (0))
5. {Difunde por renglones error replicado en la columna 0 de procesadores}error ← dgsum2d(′Ren′, 1, error)
6. Para k = 0,1,..., Mientras error > tol
6.1. JFB(k) ← ParaleloCalculaJFB(S∗, A1, ..., An, P (k), Q(k))
6.2. sol(k) ← pdgesv(JFB(k),−F (k))
6.3. [c(k+1), P (k+1), Q(k+1)]← ParaleloActualizaZ(c(k), P (k), Q(k), sol(k))
6.4. F (k+1) ← ParaleloCalculaF(c(k+1), A0, ..., An, P (k+1), S∗, Q(k+1))
6.5. error ← pdnrm2(F (k))
6.6. {Difunde por renglones error replicado en la columna 0 de procesadores}error ← dgsum2d(′Ren′, 1, error)
Los tiempos de ejecucion de los pasos 6.1., 6.3. y 6.4. de este algoritmo son,
respectivamente:
TJFB(m, n, Prc) =2mn + 2n2
Prctf +
(n3 + 3mn2 + m2n
)(
tm +Pr + Pc
2tv
)
TZ(m, n, Prc) =
(mn√Prc
+n2
√Prc
+ n
)
tf +
(
n + m +2Pr + Pc + 3
2
)
tm+
+
{Pr + Pc
2√
Prc
(mn + n2) +
(Pr + 1
2Pr+
Pr + Pc + 2
2
)
n
}
tv
TF (m, n, Prc) =
(6mn2
Prc+
2n3
Prc+
2m3
Prc
)
tf+
((log2Pc + log2Pr)(3n + m) + mn + 2n2
)tm+
(Pr + Pc
2(2n2 + mn) +
log2Pc
Pr(2mn + m2 + n2) +
log2Pr
Pc(3n2 + m2)
)
tv
87
Considerando m = n, el tiempo de ejecucion de las operaciones aritmeticas
de FB es:
TA(m, Prc) =
(74m3
3Prc+
4m2
Prc+
2m
Prc+
Pr + Pc
2
)
tf+
+ K
{16m6
3Prc+
8m5
Prc+
4m4
Prc+
32m3
3Prc+
(8
Prc+
2√Prc
)
m2+
+
(
1 +2
Prc
)
m
}
tf
y el tiempo de comunicaciones es:
TCm(m, Prc) =
(
3m2 + (4log2Pc + 4log2Pr + 17)m +Pr + Pc
2
)
tm+
+ K{5m3 + (2log2Prc + 15)m2 + (log2Prc + 4log2Pr + 4log2Pc + 8)m+
+3Pr
2+ Pc
}
tm
TCv(m, Prc) =
{(14log2Prc√
Prc
+4log2Pr
Pc+
4log2Pc
Pr+
3
2(Pr + Pc)
)
m2 +Pr + Pc
2
}
tv+
+ K
{
(log2Prc + 12)m4
√Prc
+
(
5Pr + Pc
2+
log2Prc + 12√Prc
)
m3+
+
(log2Prc + Pr + Pc + 12√
Prc
+ 3Pr + Pc
2+
4log2Pc
Pr+
4log2Pr
Pc
)
m2+
+
(
Pr + Pc +1
Pr+ 3
)m
2+
Pr + Pc
2
}
tv
MI Paralelo. Ademas de la paralelizacion de las operaciones de MI ya presen-
tadas, el calculo del error tambien se paraleliza como se explica enseguida. Como
S∗ y S estan replicados en los procesadores, para que ninguno de ellos quede
ocioso al manipular estos vectores en el calculo del error, cada procesador ma-
nipula una parte de los mismos. Por ejemplo, si se tienen Prc = 4 procesadores
(ya sea en una malla 2× 2, 1× 4 o 4 × 1) y la longitud de S y S∗ es m = 13,
entonces tres de los procesadores manipulara 3 elementos y el cuarto procesador
manipulara 4 elementos. Para controlar esto, se utilizan las estructuras de datos:
longi, low, up, que en este ejemplo tendran los valores:
Procesador longi low up
0 4 1 4
1 3 5 7
2 3 8 10
3 3 11 13
Este proceso paralelo se escribe en el Algoritmo 36.
88
Algoritmo 36 ParaleloCalculaError
1. { Slow:up ← Slow:up − S∗low:up }
Slow:up ← daxpy(longi,−1,0d0, S∗low:up, Slow:up)
2. { error ←√
S2low + S2
low+1 + ... + S2up }
error ← dnrm2(longi, Slow:up)
3. { error ← S2low + S2
low+1 + ... + S2up }
error ← error ∗ error
4. { Calcula error total, error = S21 + S2
2 + ... + S2n en procesador 0 }
error ← dgsum2d(′All′, 1, error)
5. Si procesador 0 entonces { enviar }dgebs2d(′All′, 1, error)
Sino { recibir }error ← dger2d(′All′, 1, error)
6. error ← sqrt(error)
Entonces, el algoritmo MI paralelo es el Algoritmo 37 y los tiempos para
calcular b, J y el error son:
Tb(m, n, Prc) =
(2mn2
Prc+
2mn
Prc+
Pr + 1
2
n
Pc+
n
Pr
)
tf +
+
(
(lpgPc + logPr + 1)n +Pr + 1
2− b
)
tm+
+
(
logPcmn
Pr+ logPr
n2
Pc+
Pr + 1
2
n
Pc+
(Pr + Pc
2
)
n−(
Pr + Pc
2
)
b
)
tv
TJ(m, n, Prc) =
(
2mn3
Prc+ 2
mn2
Prc+
Pr + 1
2
n2
Pc
)
tf+
+
(
(logPc + logPr + 1)n2 +
(Pr + 1
2− b
)
n
)
tm+
+
(
logPcmn2
Pr+ logPr
n3
Pc+
Pr + 1
2
n2
Pc+
Pr + Pc
2n2 − Pr + Pc
2bn
)
tv
Terror =
(4n
Prc+
Pr + Pc
2
)
tf +Pr + Pc
2(tm + tv)
donde b es el tamano de bloque en la distribucion cıclica de las matrices y
vectores en la malla logica de procesadores.
89
Algoritmo 37 MIParalelo
1. A(0) ← ParaleloCalculaA(c(0), A0, ..., An)
2. [P (0), S(0), Q(0)]← pdgesvd(A(0))
3. error ← ParaleloCalculaError(S(0), S∗)
4. Para k = 0,1,..., Mientras error > tol
4.1. J (k) ← ParaleloCalculaJ(A1, ..., An, P (k), Q(k))
4.2. b(k) ← ParaleloCalculab(A0, P(k), Q(k), S∗)
4.3. c(k+1) ← pdgesv(J (k), b(k))
4.4. { Redistribuye c(k+1) de modo que el procesador 0 lo
contenga completamente }c← pdgemr2d( n
Pr, c(k+1))
4.5. { Replica c(k+1) en todos los procesadores realizando
una dispersion uno a todos de un mensaje de longitud n }Si procesador 0 entonces { enviar }
dgebs2d(′All′, n, c(k+1))
Sino { recibir }c(k+1) ← dgebr2d(′All′, n, c(k+1))
4.6. A(k+1) ← ParaleloCalculaA(c(k+1), A0, ..., An)
4.7. [P (k+1), S(k+1), Q(k+1)]← pdgesvd(A(k+1))
4.8. error ← ParaleloCalculaError(S(k+1), S∗)
Por lo tanto, el tiempo de ejecucion aritmetico de MI cuando m = n es:
TA(m, Prc) =
(44
3
m3
Prc+ 4
m
Prc+
Pr + Pc
2
)
tf+
+ K
{2m4
Prc+
58
3
m3
Prc+
+
(Pr + 1
2Pc+
2
Prc
)
m2 +
(1
Pr+
4
Prc
)
m +Pr + 1
2Pc+
Pr + Pc
2
}
tf ,
y el de comunicaciones es:
TCm(m, Prc) =
(
17m +Pr + Pc
2
)
tm+
+ K
{
(log2Pc + log2Pr + 1) m2 +
(
log2Prc + log2Pr + log2Pc +Pr
2− b
)
m+
+2Pr + Pc − b} tm
TCv(m, Prc) =
(14logPrcm
2
√Prc
+Pr + Pc
2
)
tv + K
{(log2Pc
Pr+
log2Pr
Pc
)
m3+
+
(57
4
log2Prc√Prc
+log2Pr
Pc+
log2Pc
Pr+
Pr + Pc
2+
Pr + 1
2Pc+
3√Prc
)
m2+
+
(
Pr + Pc +Pr + 1
2Pc+
1
2Pr −
Pr + Pc
2b
)
m + (1− b)Pr + Pc
2
}
tv
90
EP Paralelo. Para estimar el tiempo de ejecucion de EP es necesario estimar
el del calculo de Atr y btr (pasos 1.y 4.4. del Algoritmo 38, donde el calculo del
error es igual que en MI.):
TAtr(m, n, Prc) =
(mn3
Prc+
n3
2Pc+
Pr + Pc + 2
4n2
)
tf+
+
(mn2
Prc+
n2
2Pc+
Pr + Pc + 2
4n
)
tf+
+Pr + Pc + 2
4(n2 + n)(tm + tv)
Tbtr(m, n, Prc) =
(mn
Prc+
4mn2
Prc+
n2
Pc+ n
Pr + Pc + 2
2
)
tf+
+ n
(
log2Pc + log2Pr +Pr + Pc + 2
2
)
tm+
+
(
nPr + Pc + 2
2+ logPc
mn
Pr+ log2 Pr
n2
Pc
)
tv
Algoritmo 38 EPParalelo
1. Atr ← ParaleloCalculaAtr(A1, ..., An)
2. Atr ← pdgetri(Atr)
3. parar ← FALSO
4. Para k = 0,1,..., Mientras NO parar
4.1. A(k) ← ParaleloCalculaA(c(k), A0, ..., An)
4.2. [P (k), S(k), Q(k)]← pdgesvd(A(k))
4.3. X(k) ← pdgemm(m, n, n, P (k), pdgemm(m, n, n, S∗, Q(k)t))
4.4. b(k)tr ← ParaleloCalculabtr(S∗, A0, P
(k), Q(k))
4.5. c(k+1) ← pdgemv(n, n, Atr, b(k)tr )
4.6. { Redistribuye c(k+1) de modo que el procesador 0 lo
contenga completamente }c← pdgemr2d( n
Pr, c(k+1))
4.7. { Replica c(k+1) en todos los procesadores realizando
una dispersion uno a todos de un mensaje de longitud n }Si procesador 0 entonces { enviar }
dgebs2d(′All′, n, c(k+1))
Sino { recibir }c(k+1) ← dgebr2d(′All′, n, c(k+1))
4.8. error ← ParaleloCalculaError(c(k+1)− c(k))
4.9. Si error < tol entonces parar ← V ERDADERO
Ası, el tiempo de ejecucion de EP se estima como:
91
TA(m, Prc) =
(m4
Prc+
(3
Prc+
1
2Pc
)
m3+
+
(Pr + Pc + 2
4+
1
2Pc
)
m2 +Pr + Pc + 2
4m
)
tf+
+ k
{56
3
m3
Prc+
(2
Prc+
1
Pc
)
m2 +
(
Pr + Pc +4
Prc + 1
)
m +Pr + Pc
2
}
tf
TCm(m, Prc) =
(Pr + Pc + 2
4m2 +
Pr + Pc + 8log2Pr + 2
4m
)
tm+
+ k
{(
log2Pr + log2Pc +Pr + Pc
2+ 18
)
m+
+3Pr
2+ Pc + 2
√
Prc
}
tm
TCv(m, Prc) =
((Pr + Pc
4+
log2Pr
2Pc+
1
Pr+
1
2
)
m2 +Pr + Pc + 2
4m
)
tv+
+ k
{(14log2Prc√
Prc
+log2Pr
Pc+
log2Pc
Pr
)
m2 +
(
Pr + Pc +1
2Pr+
11
2
)
m+
+Pr + Pc
2
}
tv
cuando m = n.
MIII Paralelo. Por ultimo, los tiempos de ejecucion de los pasos 5.5., 5.6. y
5.7. del Algoritmo 39 son:
TW (m, n, Prc) =2m2n + 2mn2
Prctf+
+ ((log2Pc + log2Pr) m + (log2Pc + log2Pr + 1) n) tm+
+
(
log2Pcmn
Pr+ log2Pr
n2
Pc+
Pr + Pc
2
mn
Pr
)
tv
THL(m, n, Prc) =
(
4mn
Prc+ 6
n2
Prc
)
tf
TP (m, n, Prc) =
(20
3
m3
Prc+
2m3
Pr+
m2
Prc+
2m2
Pr+ 4m2
)
tf+
+(m2(Pr + 3) + m(3log2Pc + 5log2Pr)
)tm+
+
(m3Pc
2Pr+
m2
Pr
(
3log2Pc +Pc
2+ 1
))
tv+
+
(m2
Pc
(
3log2Pr +log2Pr
2
)
+ m2(Pr + 1)
)
tv
92
Algoritmo 39 MIIIParalelo
1. A(0) ← ParaleloCalculaA(c(0), A0, ..., An)
2. [P (0), S(0), Q(0)]← pdgesvd(A(0))
3. denoi,j ←[S∗2
i − S∗2j
]
i=1,n/Pr ; j=1,n/Pc; excepto i=j
4. W (0) ← ParaleloCalculaW (P (0), Q(0), A(0))
5. Para k = 0,1,..., Mientras pdlange(W (k) − diag(S∗)) > tol
5.1. J (k) ← ParaleloCalculaJ(A1, ..., An, P (k), Q(k))
5.2. b(k) ← ParaleloCalculab(A0, P(k), Q(k), S∗)
5.3. c(k+1) ← pdgesv(J (k), b(k))
5.4. { Redistribuye c(k+1) de modo que el procesador 0 lo
contenga completamente }c← pdgemr2d( n
Pr, c(k+1))
5.5. { Replica c(k+1) en todos los procesadores realizando
una dispersion uno a todos de un mensaje de longitud n }Si procesador 0 entonces { enviar }
dgebs2d(′All′, n, c(k+1))
Sino { recibir }c(k+1) ← dgebr2d(′All′, n, c(k+1))
5.6. A(k+1) ← ParaleloCalculaA(c(k+1), A0, ..., An)
5.7. W (k) ← ParaleloCalculaW(P (k), Q(k), A(k+1))
5.8. [H(k), L(k)]← ParaleloCalculaHL(S∗, W (k), deno)
5.9. P (k+1) ← ParaleloAproximaP(P (k), H(k))
5.10. Q(k+1) ← ParaleloAproximaQ(Q(k), L(k))
5.11. W (k+1) ← ParaleloCalculaW (P (k+1), Q(k+1), A(k+1))
El paso 5.8. tiene el mismo costo que TP , sustituyendo m por n. Por lo tanto,
el tiempo de ejecucion de MIII, tomando m = n es:
TA(m, Prc) =
(53m3
3Prc+
7m2
Prc
)
tf+
k
{2m4
Prc+
27m3
Prc+
(18
Prc+
4
Pr+
Pr
2Pc+ 8
)
m2 +m
Pr+
Pr + 1
2Pc
}
tf
TCm(m, Prc) = [(log2Pr + log2Pc + 17)m + Pr + Pc] tm+
k
{
(Pr + log2Pr + log2Pc + 4) m2 +
(
log2Prc + 10log2Pc + 14log2Pr +Pr
2− b +
15
2
)
m+
2Pr +3Pc
2
}
tm
93
TCv(m, Prc) =
[(14log2Prc√
Prc
+log2Pr
Pc+
log2Pc
Pr
)
m2 + Pr + Pc
]
tv+
+ k
{(log2Pc
Pr+
log2Pr
Pc+
Pc
2Pr
)
m3+
+
(log2Prc + 12
4√
Prc
+13log2Pr
Pc+
6log2Pc
Pr+
Pr + 1
2Pc+
Pc + 1
Pr+
Pc + 3Pr
2+
3
2
)
m2+
+
(
3Pr + Pc
2+
Pr + 1
2Pc+
1
2Pr− Pr + Pc
2b
)
m+
+ Pr + Pc −Pr + Pc
2b
}
tv
Era de esperarse que, como se utilizan rutinas eficientes de ScaLAPACK y
PBLAS, los tiempos de ejecucion paralelos son aproximadamente los tiempos
secuenciales divididos por el numero de procesadores mas el tiempo de comu-
nicaciones entre estos. En terminos de orden superior, los tiempos de ejecucion
aritmeticos paralelos son:
TFB :74m3
3Prc+ O
(m2
Prc
)
+ k
{16m6
3Prc+ O
(m5
Prc
)}
TMI :44m3
3Prc+ O
(m
Prc
)
+ k
{2m4
Prc+ O
(m3
Prc
)}
TEP :m4
Prc+ O
(m3
Prc
)
+ k
{56m3
3Prc+ O
(m2
Prc
)}
;
TMIII :53m3
3Prc+ O
(m2
Prc
)
+ k
{2m4
Prc+ O
(m3
√Prc
)}
los tiempos de establecimiento de comunicacion son:
TFB : 3m2 + O(
log2
√
Prc
)
+ k{
5m3 + O(√
Prcm2)}
TMI : 17m + k{
2log2
√
Prcm2 + O
(√
Prcm)}
TEP :
√Prcm
2
2+ O
(√
Prcm)
+ k
{√Prcm
2
}
;
TMIII : 2log2
√
Prcm + k{√
Prcm2 + O
(√
Prcm)}
,
a lo largo de todo FB se establecen mas comunicaciones que en resto de los
algoritmos. Observando los tiempos del ciclo, el que menos establece comuni-
caciones es EP, sin embargo en las operaciones anteriores al ciclo es el mas
costoso. MI y MIII observan el fenomeno inverso de EP. Por ultimo, los tiempos
de transferencia son:
TFB :14log2Prcm
2
√Prc
+ k
{log2Prcm
4
√Prc
+ O(√
Prcm3)}
TMI :14log2Prcm
2
√Prc
+ k
{2log2
√Prcm
3
√Prc
+ O(√
Prcm2)}
94
TEP :
√Prcm
2
4+ O
(√
Prcm)
+ k
{14log2Prcm
2
√Prc
+ O(√
Prcm)}
;
TMIII :14log2Prcm
2
√Prc
+ k
{log2Prcm
3
√Prc
+ O(√
Prcm2)}
,
dentro del ciclo, FB realiza mas redistribucion de datos que el resto de los
algoritmos, el mas barato sigue siendo EP ; en las operaciones previas al ciclo,
practicamente no hay diferencias entre ellos.
Con estos tiempos de ejecucion teoricos y los tiempos de ejecucion teoricos
secuenciales del Capıtulo 3 se puede estimar la tendencia asintotica del Speedup
cuando crece el tamano del problema (m→∞). Se puede comprobar que para
todos los algoritmos paralelos del PIAVS el Speedup teorico alcanza el optimo:
limm→∞
SFB(m, Prc) = limm→∞
T (m, 1)
T (m, Prc)
(3Prc
16m6tf
)(3Prc
16m6tf
)−1
= Prc
limm→∞
SMI (m, Prc) = limm→∞
T (m, 1)
T (m, Prc)
(Prc
2m4tf
)(Prc
2m4tf
)−1
= Prc
limm→∞
SEP (m, Prc) = limm→∞
T (m, 1)
T (m, Prc)
(Prc
m4tf
)(Prc
m4tf
)−1
= Prc
limm→∞
SMIII(m, Prc) = limm→∞
T (m, 1)
T (m, Prc)
(Prc
2m4tf
)(Prc
2m4tf
)−1
= Prc
Con los tiempos de ejecucion estimados tambien se pueden prever los tiempos
de ejecucion experimentales de los algoritmos paralelos si se eligen adecuada-
mente los parametros tf , tm y tv. Si los experimentos se llevaran a cabo en el
cluster Kefren, remitiendose a la parametrizacion de este presentada en la intro-
duccion, los parametros de comunicaciones se toman con los valores: tm = 5e−6
segundos y tv = 4e − 8 segundos/doble. El valor de tf dependera del tipo de
operaciones que realice cada algoritmo. En FB se aplican operaciones vectoriales
y en menor medida operaciones matriciales, por eso se utiliza tf =0.001e − 6
segundos. En MIII predominan las operaciones matriciales, por lo tanto se toma
tf =0.0005e− 6 segundos; mientras que MI puede verse como un algoritmo que
aplica un subconjunto de las operaciones de MIII, por lo que se toma el mismo
valor para tf . EP utiliza en su mayor parte operaciones vectoriales y escalares,
por lo que se toma tf = 0,003e− 6 segundos.
Habiendo elegido los parametros de flop y de comunicaciones, se investiga
bajo que configuracion de malla de procesadores se obtienen los mejores tiempos
de ejecucion en el cluster Kefren, para ello se estiman tiempos para algunos
valores de m y Prc. Los resultados obtenidos son:
95
Prc FB (seg)
1× 9 37.671 182.583 653.527
9× 1 37.669 182.579 653.520
3× 3 37.562 182.327 653.031 ←
1× 12 30.328 142.119 500.850
12× 1 30.325 142.115 500.842
2× 6 30.192 141.802 500.234
6× 2 30.192 141.801 500.232
3× 4 30.165 141.738 500.110 ←
4× 3 30.165 141.738 500.110 ←
m = n 60 80 100
Prc MI (seg)
1× 6 3.1324e+02 3.7607e+03 1.7104e+04
6× 1 3.1342e+02 3.7614e+03 1.7105e+04
2× 3 2.4310e+02 3.2000e+03 1.5212e+04 ←
3× 2 2.4313e+02 3.2001e+03 1.5212e+04
1× 9 2.8784e+02 3.1010e+03 1.3364e+04
9× 1 2.8809e+02 3.1019e+03 1.3366e+04
3× 3 1.8624e+02 2.2888e+03 1.0623e+04 ←
m = n 1000 2000 3000
Prc EP (seg)
1× 6 5.2471e+02 8.1479e+03 4.0944e+04
6× 1 5.2352e+02 8.1381e+03 4.0910e+04
2× 3 5.2136e+02 8.1315e+03 4.0900e+04
3× 2 5.2111e+02 8.1295e+03 4.0893e+04 ←
1× 9 3.5827e+02 5.4677e+03 2.7381e+04
9× 1 3.5700e+02 5.4572e+03 2.7345e+04
3× 3 3.5210e+02 5.4390e+03 2.7307e+04 ←
m = n 1000 2000 3000
Prc MIII (seg)
1× 4 4.8459e+02 5.7285e+03 2.5917e+04
4× 1 4.1035e+02 5.0715e+03 2.3629e+04
2× 2 3.6933e+02 4.7874e+03 2.2720e+04 ←
1× 8 5.0650e+02 4.8809e+03 1.9656e+04
8× 1 3.5371e+02 3.5136e+03 1.4878e+04
2× 4 2.8269e+02 3.0736e+03 1.3537e+04
4× 2 2.5702e+02 2.8269e+03 1.2658e+04 ←
m = n 1000 2000 3000
En todos los algoritmos, las mallas de procesadores con mejores tiempos de
ejecucion corresponden a las cuadradas, tal como lo establece ScaLAPACK.
Ahora, con los parametros establecidos tf , tm y tv y conociendo la mejor
configuracion de malla con mejores tiempos de ejecucion, se calculan los tiem-
pos de ejecucion teoricos en el cluster Kefren para mallas cuadradas y diversos
valores de m = n, siendo los resultados obtenidos los de las Tablas 4.1 para FB,
4.2 para MI, 4.3 para EP y 4.4 para MIII, cuando los algoritmos ejecutan una
sola iteracion.
96
Tabla 4.1: Tiempos de Ejecucion Teoricos de FB en Kefren
Prc Tiempo estimado en segundos
1 9.29e+01 2.68e+02 6.64e+02 1.46e+03 2.93e+03 5.49e+03
2 4.91e+01 1.39e+02 3.40e+02 7.44e+02 1.48e+03 2.77e+03
4 2.70e+01 7.41e+01 1.77e+02 3.83e+02 7.62e+02 1.41e+03
6 1.96e+01 5.22e+01 1.23e+02 2.63e+02 5.18e+02 9.57e+02
8 1.58e+01 4.12e+01 9.57e+01 2.02e+02 3.96e+02 7.29e+02
9 1.46e+01 3.75e+01 8.65e+01 1.82e+02 3.56e+02 6.53e+02
10 1.36e+01 3.46e+01 7.92e+01 1.66e+02 3.23e+02 5.91e+02
12 1.20e+01 3.01e+01 6.81e+01 1.41e+02 2.74e+02 5.00e+02
14 1.10e+01 2.70e+01 6.03e+01 1.24e+02 2.39e+02 4.34e+02
16 1.01e+01 2.45e+01 5.43e+01 1.11e+02 2.12e+02 3.85e+02
m 50 60 70 80 90 100
mFJ 5050 7260 9870 12880 16290 10100
Tabla 4.2: Tiempos de Ejecucion Teoricos de MI en Kefren
Prc Tiempo estimado en segundos
1 6.58e+01 1.02e+03 5.13e+03 1.61e+04 3.93e+04 8.15e+04
2 4.10e+01 5.67e+02 2.74e+03 8.49e+03 2.04e+04 4.21e+04
4 2.62e+01 3.18e+02 1.47e+03 4.48e+03 1.06e+04 2.18e+04
6 2.24e+01 2.43e+02 1.07e+03 3.20e+03 7.52e+03 1.52e+04
8 2.09e+01 2.08e+02 8.91e+02 2.58e+03 5.98e+03 1.19e+04
9 1.91e+01 1.86e+02 7.90e+02 2.28e+03 5.30e+03 1.06e+04
10 2.04e+01 1.90e+02 7.84e+02 2.22e+03 5.09e+03 1.01e+04
12 1.78e+01 1.60e+02 6.54e+02 1.85e+03 4.22e+03 8.38e+03
14 2.03e+01 1.72e+02 6.74e+02 1.84e+03 4.12e+03 8.05e+03
16 1.66e+01 1.38e+02 5.41e+02 1.49e+03 3.37e+03 6.62e+03
m 500 1000 1500 2000 2500 3000
Tabla 4.3: Tiempos de Ejecucion Teoricos de EP en Kefren
Prc Tiempo estimado en segundos
1 1.97e+02 3.07e+03 1.54e+04 4.85e+04 1.18e+05 2.44e+05
2 9.97e+01 1.54e+03 7.72e+03 2.43e+04 5.91e+04 1.22e+05
4 5.11e+01 7.75e+02 3.87e+03 1.21e+04 2.96e+04 6.12e+04
6 3.51e+01 5.21e+02 2.59e+03 8.13e+03 1.97e+04 4.09e+04
8 2.73e+01 3.94e+02 1.95e+03 6.11e+03 1.48e+04 3.07e+04
9 2.45e+01 3.52e+02 1.73e+03 5.43e+03 1.32e+04 2.73e+04
10 2.27e+01 3.19e+02 1.57e+03 4.90e+03 1.19e+04 2.46e+04
12 1.94e+01 2.68e+02 1.31e+03 4.09e+03 9.93e+03 2.05e+04
14 1.78e+01 2.34e+02 1.13e+03 3.53e+03 8.54e+03 1.76e+04
16 1.56e+01 2.05e+02 9.94e+02 3.08e+03 7.47e+03 1.54e+04
m 500 1000 1500 2000 2500 3000
97
Tabla 4.4: Tiempos de Ejecucion Teoricos de MIII en Kefren
Prc Tiempo estimado en segundos
1 7.46e+01 1.07e+03 5.27e+03 1.64e+04 3.99e+04 8.24e+04
2 5.24e+01 6.38e+02 2.96e+03 8.98e+03 2.14e+04 4.36e+04
4 3.57e+01 3.69e+02 1.62e+03 4.78e+03 1.12e+04 2.27e+04
6 3.33e+01 3.05e+02 1.26e+03 3.59e+03 8.25e+03 1.64e+04
8 3.34e+01 2.82e+02 1.11e+03 3.07e+03 6.90e+03 1.35e+04
9 2.98e+01 2.41e+02 9.41e+02 2.60e+03 5.87e+03 1.15e+04
10 3.43e+01 2.76e+02 1.04e+03 2.81e+03 6.20e+03 1.19e+04
12 2.95e+01 2.23e+02 8.31e+02 2.23e+03 4.92e+03 9.53e+03
14 3.72e+01 2.82e+02 1.01e+03 2.62e+03 5.60e+03 1.05e+04
16 2.86e+01 1.97e+02 7.03e+02 1.83e+03 3.97e+03 7.60e+03
m 500 1000 1500 2000 2500 3000
De acuerdo a las estimaciones presentadas en las tablas anteriores, de los
algoritmos paralelos MI, EP y MIII, se espera que EP sea el mas costoso y MI
el menos costoso cuando se ejecuten las operaciones anteriores al ciclo y una sola
vez las del ciclo. Por otra parte, al trabajar FB con m pequenas y con mFJ del
orden O(m4), los tiempos de ejecucion esperados dependeran de la manipulacion
de estructuras del orden de mFJ , de ahı, por ejemplo, las 17 horas empleadas
en un problema de tamano m = 150.
El siguiente paso es realizar pruebas experimentales de tiempos de ejecucion
de los algoritmos paralelos (que pueden cotejarse con las estimaciones de las
tablas anteriores) para, con base en los resultados arrojados, calcular y analizar
sus prestaciones experimentales.
4.3. Prestaciones Experimentales de los Algorit-
mos Paralelos del PIAVS
Como se especifico en la introduccion, las metricas para analizar y evaluar
los algoritmos paralelos son: el tiempo de ejecucion, speedup, eficiencia y esca-
labilidad. Para entrar en materia, primero se corrobora experimentalmente que
las mejores mallas de procesadores en el cluster Kefren son las cuadradas, como
se ve en las siguientes tablas:
Prc FB (seg) MI (seg)
1× 4 0.87 7.77 39 454
4× 1 1.22 10.2 42 425
2× 2 0.78 7.35 30 372
1× 6 0.84 5.76 109 1246
6× 1 1.23 9.01 117 1247
2× 3 0.69 5.65 66 1029
3× 2 0.87 6.53 69 1059
m = n 25 40 512 1024
98
Prc EP (seg) MIII (seg)
1× 8 32 575 45 578
8× 1 34 626 51 547
2× 4 35 694 37 482
4× 2 31 570 33 466
1× 9 497 539 46 560
9× 1 498 559 53 543
3× 3 493 508 33 417
m = n 512 1024 512 1024
A continuacion se presentan los tiempos de ejecucion de un conjunto de
experimentos del tipo Toep1, con m = n = {1000, 2000, 3000} para MI, EP y
MIII y con m = n = {50, 60, 70, 80, 90, 100} para FB, realizados en el cluster
Kefren con mallas cuadradas. Los tiempos de ejecucion miden una sola iteracion
de los algoritmos (en segundos) y se registran de la Tabla 4.5 a la 4.8, para
los algoritmos FB, MI, EP y MIII. En particular, con FB paralelo se pueden
resolver problemas que secuencialmente no serıa posible, como son los casos
m = n = {80, 90, 100}.
Tabla 4.5: Tiempos de Ejecucion Experimentales de FB
Prc Segundos
1 83 244 609 - - -
2 44 125 309 679 - -
4 26 71 167 359 729 1323
6 18 50 114 244 493 882
8 15 39 90 189 377 674
9 13 36 87 173 336 612
10 13 33 74 154 309 547
12 11 29 68 134 257 468
14 10 26 56 115 228 401
16 9 25 53 106 207 365
m 50 60 70 80 90 100
mFJ 5050 3260 2870 12880 16290 20100
Tabla 4.6: Tiempos de Ejecucion Experimentales de MI
Prc Segundos
1 1026 16147 84410
2 661 8837 42864
4 332 4583 22538
6 250 3323 15707
8 226 2744 12759
9 175 2297 10789
10 227 2488 11039
12 165 1949 8870
14 203 1977 8785
16 140 1537 6885
m 1000 2000 3000
99
Tabla 4.7: Tiempos de Ejecucion Experimentales de EP
Prc Segundos
1 3122 50060 249612
2 1651 25029 128532
4 880 12782 64990
6 650 8717 43285
8 458 6644 36787
9 409 5989 32608
10 445 5454 26406
12 320 4729 22176
14 385 3890 20209
16 337 4372 19493
m 1000 2000 3000
Tabla 4.8: Tiempos de Ejecucion Experimentales de MIII
Prc Segundos
1 1181 17124 86131
2 692 9407 43306
4 402 4973 22160
6 351 3586 15813
8 265 2909 12774
9 237 2493 10792
10 265 2747 11059
12 200 2111 8745
14 233 2108 8790
16 169 1686 6882
m 1000 2000 3000
Puede observarse en las tablas anteriores que en todos los casos de todos los
algoritmos hay una reduccion sustancial de los tiempos de ejecucion secuenciales
cuando se utiliza mas de un procesadores, por lo que el paralelismo aplicado
a estos algoritmos altamente costosos del PIAVS cumple con el cometido de
disminuir los costos temporales para resolver el problema. Esta disminucion de
costos se aprecia en las Figuras 4.1, 4.2, 4.3 y 4.4, donde tambien se contrastan
los tiempos de ejecucion experimentales con los estimados teoricamente en la
seccion anterior y se puede observar que los algoritmos se han comportado muy
similarmente a como se estimo.
100
0 2 4 6 8 10 12 14 160
10
20
30
40
50
60
70
80
90
100
Procesadores
Tie
mpo
s de
eje
cuci
ón d
e F
B (
segu
ndos
)
ExperimentalTeórico FB, m=50
0 2 4 6 8 10 12 14 160
100
200
300
400
500
600
700
Procesadores
Tie
mpo
s de
eje
cuci
ón d
e F
B (
segu
ndos
)
ExperimentalTeórico FB, m=70
Figura 4.1: Tiempos de ejecucion teoricos vs. experimentales de FB
0 2 4 6 8 10 12 14 160
2000
4000
6000
8000
10000
12000
14000
16000
18000
Procesadores
Tie
mpo
s de
eje
cuci
ón d
e M
I (se
gund
os)
ExperimentalTeórico MI, m=2000
0 2 4 6 8 10 12 14 160
1
2
3
4
5
6
7
8
9x 104
Procesadores
Tiem
pos
de e
jecu
ción
de
MI (
segu
ndos
)
ExperimentalTeórico MI, m=3000
Figura 4.2: Tiempos de ejecucion teoricos vs. experimentales de MI
0 2 4 6 8 10 12 14 160
500
1000
1500
2000
2500
3000
3500
Procesadores
Tie
mpo
s de
eje
cuci
ón d
e E
P (
segu
ndos
)
ExperimentalTeórico EP, m=1000
0 2 4 6 8 10 12 14 160
1
2
3
4
5
6x 104
Procesadores
Tiem
pos
de e
jecu
ción
de
EP
(seg
undo
s)
ExperimentalTeórico EP, m=2000
Figura 4.3: Tiempos de ejecucion teoricos vs. experimentales de EP
101
0 2 4 6 8 10 12 14 160
2000
4000
6000
8000
10000
12000
14000
16000
18000
Procesadores
Tie
mpo
s de
eje
cuci
ón d
e M
III (
segu
ndos
)
ExperimentalTeórico MIII, m=2000
0 2 4 6 8 10 12 14 160
1
2
3
4
5
6
7
8
9x 104
Procesadores
Tiem
pos
de e
jecu
ción
de
MIII
(seg
undo
s)
ExperimentalTeórico MIII, m=3000
Figura 4.4: Tiempos de ejecucion teoricos vs. experimentales de MIII
Con estos tiempos de ejecucion experimentales se puede medir el Speedup de
los algoritmos paralelos. Para FB, el Speedup en todos los experimentos es bueno
con 2 y 4 procesadores; con 6 y 8 procesadores el caso m = 70 (mFJ = 9870)
sigue teniendo un Speedup aceptable. El Speedup de MI (Figura 4.5) indica que
las prestaciones son mejores a medida que m se incrementa (m = 3000), sin
embargo, utilizando hasta 4 procesadores se obtienen buenos Speedups en todos
los casos.
0 2 4 6 8 10 12 14 160
2
4
6
8
10
12
Procesadores
Spe
edup
de
FB
m=50m=60m=70
0 2 4 6 8 10 12 14 160
2
4
6
8
10
12
14
Procesadores
Spe
edup
de
MI
m=1000m=2000m=3000
Figura 4.5: Speedup experimental de FB y MI para m = {1000, 2000, 3000}
Hasta con 8 procesadores el Speedup de EP es bueno para m = 3000 y
aceptable para m = 2000 y m = 1000. Para el caso m = 3000 el Speedup se
mantiene aceptable hasta con 12 procesadores (ver Figura 4.6).
Por ultimo, MIII presenta buenos Speedups con 2 procesadores en todos los
casos. Con 4 procesadores y m = {2000, 3000} el Speedup tambien es bueno y se
mantiene aceptable con 6, 8 y 9 procesadores para m = 3000, como se observa
en la Figura 4.6.
102
0 2 4 6 8 10 12 14 160
2
4
6
8
10
12
14
Procesadores
Spe
edup
de
EP
m=1000m=2000m=3000
0 2 4 6 8 10 12 14 160
2
4
6
8
10
12
14
Procesadores
Spe
edup
de
MIII
m=1000m=2000m=3000
Figura 4.6: Speedup experimental de EP y MIII para m = {1000, 2000, 3000}
Se ha observado que el Speedup disminuye, en la mayorıa de los experimen-
tos, cuando Prc = {10, 14} debido a que ScaLAPACK indica que las mejores
prestaciones se obtienen cuando se trabaja con mallas logicas de procesadores
cuadradas, lo que no es posible construir con 10 ni 14 procesadores (Prc = 2× 5
y Prc = 2× 7 procesadores, respectivamente). Sin embargo, este disminucion es
menor conforme m se incrementa, como es el caso de FB que para m = 70 se
manipulan matrices y vectores de dimension mFJ = 9870.
Una forma equivalente al Speedup para observar las prestaciones de FB, MI,
EP y MIII paralelos es la Eficiencia, con la que se determina el porcentaje de
aprovechamiento de los procesadores que se han utilizado en los experimentos.
Los resultados obtenidos estan en las Tablas 4.9, 4.10, 4.11 y 4.12.
Tabla 4.9: Eficiencia Experimental de FB
Prc Aprovechamiento
1 100 % 100 % 100 %
2 94 % 97 % 98 %
4 79 % 85 % 91 %
6 76 % 81 % 89 %
8 69 % 78 % 84 %
9 70 % 75 % 77 %
10 63 % 73 % 82 %
12 62 % 70 % 74 %
14 59 % 67 % 77 %
16 57 % 61 % 71 %
m 50 60 70
mFJ 5050 7260 9870
103
Tabla 4.10: Eficiencia Experimental de MI
Prc Aprovechamiento
1 100 % 100 % 100 %
1× 2 77 % 91 % 98 %
2× 2 77 % 88 % 93 %
2× 3 68 % 80 % 89 %
2× 4 56 % 73 % 82 %
3× 3 65 % 78 % 86 %
2× 5 45 % 64 % 76 %
3× 4 51 % 69 % 79 %
2× 7 36 % 58 % 68 %
4× 4 45 % 65 % 76 %
m 1000 2000 3000
Tabla 4.11: Eficiencia Experimental de EP
Prc Aprovechamiento
1 100 % 100 % 100 %
1× 2 94 % 98 % 97 %
2× 2 88 % 97 % 96 %
2× 3 80 % 95 % 96 %
2× 4 85 % 94 % 84 %
3× 3 84 % 92 % 85 %
2× 5 70 % 91 % 94 %
3× 4 81 % 88 % 93 %
2× 7 57 % 91 % 88 %
4× 4 57 % 71 % 80 %
m 1000 2000 3000
Tabla 4.12: Eficiencia Experimental de MIII
Prc Aprovechamiento
1 100 % 100 % 100 %
1× 2 85 % 91 % 99 %
2× 2 73 % 86 % 97 %
2× 3 56 % 79 % 90 %
2× 4 55 % 73 % 84 %
3× 3 55 % 76 % 88 %
2× 5 44 % 62 % 77 %
3× 4 49 % 67 % 82 %
2× 7 36 % 58 % 69 %
4× 4 43 % 63 % 78 %
m 1000 2000 3000
EP es el algoritmo paralelo que mejor aprovechamiento hace de los proce-
sadores, pues alcanza un 84% con m = 1000 y 9 procesadores; FB tambien
presenta aprovechamientos aceptables, pues alcanza al menos un 80% con 4, 6
104
y 8 procesadores para los casos m = {50, 60, 70} (mFJ = {5050, 7260, 9870};MI tiene aprovechamientos de procesador aceptables con 6 y 9 procesadores
para los casos m = {2000, 3000}; MIII mejora un poco el comportamiento de
MI, logrando un 85% para m = 1000 pero con 2 procesadores. En todos los
casos las mejores eficiencias se alcanzan con m = 3000 para MI,EP y MIII y
con m = 70 para FB.
Por ultimo, se analiza la escalabilidad de los algoritmos paralelos, es decir, la
capacidad que tienen de mantener sus prestaciones haciendo crecer en la misma
proporcion el numero de procesadores y el tamano del problema. Para analizar
la escalabilidad se calcula el Speedup escalado de los algoritmos. Como el costo
computacional secuencial de FB es O(m6), se han realizado experimentos en
Kefren con los siguientes tamanos de problema: m = {30, 33, 37, 40, 42, 43, 44,
45, 46, 47} correspondientes a Prc = {1, 2, 4, 6, 8, 9, 10, 12, 14, 16}. El costo
computacional secuencial de MI, EP y MIII es O(m4), entonces se han hecho
experimentos en Kefren con los tamanos de problema: m = {1000, 1189, 1414,
1565, 1681, 1732, 1861, 2000} que corresponden con Prc = {1, 2, 4, 6, 8, 9, 12,
16}. Los resultados estan en la Figura 4.7.
0 2 4 6 8 10 12 14 161
2
3
4
5
6
7
8
Procesadores
Spe
edup
Esc
alad
o
FB
0 2 4 6 8 10 12 14 160
2
4
6
8
10
12
Procesadores
Spe
edU
p E
scal
ado
MI EP MIII
Figura 4.7: SpeedUp Escalado de los algoritmos paralelos del PIAVS
FB es un algoritmo poco escalable. EP mantiene su escalabilidad muy cerca
de la curva ideal, lo que lo convierte en un algoritmo de muy buena escalabilidad.
MI y MIII tienen un comportamiento similar y escalan aceptablemente bien.
4.4. Conclusiones
Muchas operaciones de los algoritmos FB, MI, EP y MIII han sido direc-
tamente paralelizadas utilizando rutinas eficientes y portables de PBLAS y
ScaLAPACK. Otras operaciones han sido disenadas en este trabajo, cuidando
disminuir en lo posible las comunicaciones de datos entre procesadores y evi-
105
tando tambien en lo posible que los procesadores quedaran ociosos, de ahı que
en el diseno paralelo se haya decidido la replica de estructuras de datos en los
procesadores.
Teoricamente los algoritmos disminuyen el tiempo de ejecucion secuencial
y tienen buenas prestaciones asintoticas. La disminucion de tiempos de ejecu-
cion se ha podido comprobar experimentalmente en el cluster Kefren: todos los
algoritmos disminuyen sustancialmente los tiempos secuenciales, con lo que se
cumple el objetivo de disminuir costos temporales para resolver el PIAVS; una
muestra de este resultado se da a continuacion (con k = 1):
FB MI EP MIII
1.3 min 23 hrs 2.8 dıas 1 dıa
44 seg 11 hrs 1.4 dıas 12 hrs
26 seg 6.2 hrs 18 hrs 6.1 hrs
18 seg 4.3 hrs 12 hrs 4.4 hrs
15 seg 3.5 hrs 10 hrs 3.6 hrs
13 seg 2.9 hrs 9 hrs 3 hrs
13 seg 3 hrs 7.3 hrs 3.1 hrs
11 seg 2.4 hrs 5.6 hrs 2.4 hrs
10 seg 2.4 hrs 5.6 hrs 2.4 hrs
9 seg 1.9 hrs 5.4 hrs 1.9 hrs
m = 50 m = 3000 m = 3000 m = 3000
Ademas de la disminucion de tiempos de ejecucion, la paralelizacion en el
caso de FB ha permitido tambien aplicar este algoritmo a problemas de tamanos
que secuencialmente no pueden abordarse, como por ejemplo m ≥ 90.
El analisis del Speedup experimental de MI, EP y MIII indica que: todos
ellos tienen buenos Speedup con 2 y 4 procesadores en todos los experimentos y
el que mejores Speedup alcanza es EP hasta con 8 procesadores. FB, en general,
tiene buenos Speedup con 2 procesadores en todos los experimentos, pero es el
algoritmo con mas bajas prestaciones. Los algoritmos alcanzan el mejor Speedup
con los problemas de mayor tamano (m = 3000 para MI, EP y MIII; m = 70
para FB), un par de graficas de los Speedup para m = 70 y m = 3000 son las
siguientes:
106
0 2 4 6 8 10 12 14 160
2
4
6
8
10
12
Procesadores
Spe
edup
Exp
erim
enta
l
FBm=70mFJ=2870
0 2 4 6 8 10 12 14 160
2
4
6
8
10
12
14
Procesadores
Spe
edup
Exp
erim
enta
l
MI EP MIII m=3000
Con respecto a la eficiencia, EP tiene la mejor y en todos los experimentos
FB, MI, EP y MIII tienen buenas eficiencias con 2 y 4 procesadores. Como
sucede con el Speedup, se obtienen mejores eficiencias cuando el tamano del
problema es grande, por ejemplo, las eficiencias experimentales para m = 70
(mFJ = 2870) y m = 3000 son:
Prc FB MI EP MIII
1 100 % 100 % 100 % 100 %
2 98 % 98 % 97 % 99 %
4 91 % 93 % 96 % 97 %
6 89 % 89 % 96 % 90 %
8 84 % 82 % 84 % 84 %
9 77 % 86 % 85 % 88 %
10 82 % 76 % 94 % 77 %
12 74 % 79 % 93 % 82 %
14 77 % 68 % 88 % 69 %
16 71 % 76 % 80 % 78 %
El algoritmo que mejor escala es EP, como ya se mostro en la Figura 4.7. En
general, MI y MIII escalan suficientemente bien, mientra que FB es el algoritmo
de menor escalabilidad.
En vista del analisis realizado, FB queda en calidad de una aproximacion
sencilla a la resolucion de PIAVS que paraleliza aceptablemente desde el punto
de vista de la disminucion de los tiempos de ejecucion secuenciales, permitiendo
resolver problemas que secuencialmente no podrıa hacerse. Sin embargo, ademas
de ser un algoritmo con importantes costos temporales y espaciales, su version
paralela no presenta muy buenas prestaciones.
MI, EP y MIII paralelos tambien cumplen con su cometido de disminuir
de manera importante los tiempos de ejecucion secuenciales. MI y MIII pre-
sentan comportamientos similares en su paralelizacion y sus prestaciones son
aceptables, pero en este rubro EP es el que presenta las mejores prestaciones,
107
sin embargo es el que consume mayor tiempo de ejecucion, como se ha podido
observar en las pruebas experimentales presentadas.
Por lo tanto, el algoritmo que mejor equilibra costos temporales y presta-
ciones es MI, mientras que FB es el algoritmo que menos flexibilidad ofrece al
PIAVS.
Todos estos algoritmos se han disenado e implementado considerando que en
el PIAVS intervienen matrices Ai (i = 0, m) no estructuradas. Considerar ma-
trices estructuradas puede repercutir en beneficio de la complejidad de tiempo
de ejecucion de los algoritmos y del requerimiento de almacenamiento, topico
que se estudia en el siguiente capıtulo.
108
Capıtulo 5
Resolucion Paralela del
PIEVS
Como se vio en la introduccion, el Problema Invserso Estructurado de Va-
lores Singulares (PIEVS) puede verse como una particularizacion del PIAVS, al
ser las matrices Ai (i = 0, m) de tipo Toeplitz, lo que da posibilidad de aplicar
directamente cualquiera de los algoritmos estudiados en capıtulos anteriores
(FB, MI, EP, MIII); sin embargo, estos algoritmos no toman ventaja de la
estructura de las matrices tipo Toeplitz. Por lo tanto, el objetivo de este capıtulo
es disenar e implementar algoritmos que tomen ventaja de la estructura de las
matrices del PIEVS para construir algoritmos eficientes que lo resuelvan.
Los algoritmos desarrollados para la resolucion eficiente del PIEVS son los
algoritmos MI y EP redisenados y adaptados para explotar la estructura Toeplitz
de las matrices. MI y EP son dos metodos de caractersiticas complementarias:
MI de rapida convergencia local a una aproximacion de alta exactitud y EP de
lenta convergencia global a una aproximacion de mediana exactitud; MI paralelo
de medianas prestaciones y EP paralelo de buenas prestaciones.
Para alcanzar el objetivo de este capıtulo, en primera instancia (Seccion 5.1)
se hace un recordatorio del PIEVS y de los algoritmos MI y EP, aplicandolos
tal y como se han disenado e implementado para el PIAVS a la resolucion de
algunos PIEVS experimentales. Los resultados de estos experimentos serviran
para contrastar los resultados obtenidos con MI y EP adaptados al PIEVS.
En la Seccion 5.2 se disenan e implementan MIE (MI Estructurado, MI
adaptado el PIEVS) y EPE (EP Estructurado, EP adaptado al PIEVS) para
el PIEVS, especificando las estructuras de datos utilizadas para representar las
matrices Toeplitz. Se hace un analisis de como se lleva a cabo la adaptacion de
los algoritmos y la forma en que se logran disminuir los tiempos de ejecucion
a traves del uso de la FFT [VL92] en operaciones medulares de los metodos
(operaciones matriz Hankel-vector). Este tipo de operaciones aparecen al dejar
109
de lado el uso de la rutina dgesvd de LAPACK (y pdgesvd de ScaLAPACK) para
calcula la svd de una matriz general y en su lugar disenar una rutina eficiente
que calcule la svd de una matriz tipo Hankel, matriz que resulta de transformar
una matriz tipo Toeplitz.
La paralelizacion de MIE y EPE se desarrolla en la Seccion 5.3, donde se
presenta el cuidado que se tiene en asegurar que los procesadores se mantengan
ociosos el mınimo de tiempo posible. En la Seccion 5.4 se estima la complejidad
de tiempo de MIE paralelo y EP paralelo y se presenta un conjunto de experi-
mentos para analizar sus prestaciones. Los experimentos se han realizado en el
cluster Kefren sobre casos Toep2.
5.1. Resoluciones Generales del PIEVS
En la introduccion se ha definido el PIEVS como sigue: dado el conjunto de
valores reales S∗ = {S∗1 , S∗
2 , ..., S∗n}, donde S∗
1 > S∗2 > ... > S∗
n > 0, se requiere
construir una matriz tipo Toeplitz T con valores singulares S∗, es decir:
T =
t0 t−1 t−2 ... t−(n−1)
t1 t0 t−1 ... t−(n−2)
t2 t1 t0 ... t−(n−3)
......
.... . .
...
t(n−1) t(n−2) t(n−3) ... t0
= Udiag(S∗)V t. (5.1)
Utilizando la siguiente notacion simplificada para representar una matriz
tipo Toeplitz:
toep(primer vector columna de T, primer vector renglon de T ),
la matriz Toeplitz de la ecuacion (5.1) se puede representar como:
T = toep([
t0, t1, ..., t(n−2), t(n−1)
],[t0, t−1, ..., t−(n−2), t−(n−1)
])
De acuerdo a los valores de las 2n − 1 incognitas t0, t1, ..., tn−1, t−1, t−2,
..., t−(n−1), T puede ser: simetrica, triangular inferior o no simetrica. El caso
simetrico ha sido estudiado en [Tre97] y [BV99]. Este trabajo, por lo tanto, se
enfoca en la resolucion de los casos triangular inferior (PIEVSti) y no simetrico
(PIEVSns).
En el caso PIEVSti, la matriz Toeplitz T es:
T =
t0 0 0 ... 0
t1 t0 0 ... 0
t2 t1 t0 ... 0...
......
. . ....
t(n−1) t(n−2) t(n−3) ... t0
(5.2)
110
es decir
T = toep([
t0, t1, t2, ..., t(n−1)
], [t0, 0, 0, ..., 0]
),
que puede expresarse como:
T = t0In + t1
0 0 ... 0 0
1 0 ... 0 0
0 1 ... 0 0
...... 1
. . ....
0 0 ... 1 0
+ t2
0 0 0 ... 0
0 0 0 ... 0
1 0 0 ... 0
... 1...
. . ....
0 0 1 ... 0
+ ...
... + tn−2
0 0 0 ... 0
0 0 0 ... 0
0 0 0 ... 0
1...
.... . .
...
0 1 0 ... 0
+ tn−1
0 0 0 ... 0
0 0 0 ... 0
0 0 0 ... 0
......
.... . .
...
1 0 0 ... 0
,
si se etiqueta cada matriz Toeplitz de la ecuacion anterior, el PIEVSti toma la
siguiente estructura
T = t0G0 + t1G1 + t2G2 + ... + t(n−2)Gn−2 + t(n−1)Gn−1
que coincide con la estructura del PIAVS cuando
c = [c1, c2, c3, ..., cn]t = [t0, t1, t2, t3, ..., tn−1]t
y
A0 = 0, A1 = G0, A2 = G1, A3 = G2, ..., An = G(n−1).
En el caso PIEVSns, (5.1) puede expresarse como:
1
t0T =
1 t−1/t0 t−2/t0 ... t−(n−1)/t0
t1/t0 1 t−1/t0 ... t−3/t0
t2/t0 t1/t0 1 ... t−2/t0...
......
. . ....
t(n−1)/t0 t(n−2)/t0 t(n−3)/t0 ... 1
= U1
t0diag(S∗)V t,
y puede reescribirse como:
T =
1 t−1 t−2 ... t−(n− 1)
t1 1 t−1. . . t−(n−2)
t2 t1 1. . . t−(n−3)
......
.... . .
...
tn−1 tn−2 tn−3 ... 1
= Udiag(S∗)V t,
donde
ti =tit0
, para i = −(n− 1),−(n− 2), ..., 1, 2, ..., n− 2, n− 1
111
y
S∗i =
S∗i
t0, para i = 1, n.
T en notacion simplificada queda como
T = toep([
1, t1, t2, ..., tn−12
, tn−12 +1, ..., tn−2, tn−1
]
,[
1, t−1, t−2, ..., t−(n−12 +1), t−(n−1
2 +2), ..., t−(n−2), t−(n−1)
])
, (5.3)
que tambien puede expresarse como
T = toep ([1, 0, 0, ..., 0, 0, ..., 0, 0] , [1, 0, 0, ..., 0, 0, ..., 0, 0]) +
+ t1toep ([0, 1, 0, ..., 0, 0, ..., 0, 0] , 0n) + t2toep ([0, 0, 1, ..., 0, 0, ..., 0, 0] , 0n) +
+ ... + tn−1toep ([0, 0, 0, ..., 0, 0, ..., 0, 1] , 0n) +
+ t−1toep (0n, [0, 1, 0, ..., 0, 0, ..., 0, 0]) + t−2toep (0n, [0, 0, 1, ..., 0, 0, ..., 0, 0]) +
+ ... + t−(n−1)toep (0n, [0, 0, 0, ..., 0, 0, ..., 0, 1]) , (5.4)
donde 0n es un vector de n ceros. En la ecuacion (5.4) se pueden identificar:
2n− 2 parametros ti (i = −(n− 1),−(n− 2), ..., 1, 2, ..., n− 1)
2n− 1 matrices tipo Toeplitz, donde
n× n es la dimension de cada matriz
y para poder expresarla como un PIAVS, sera necesario manejar:
n parametros ci (i = 1, 2, ..., n)
n + 1 matrices Ai (i = 0, 1, ..., n), donde
n× n es la dimension de cada matriz
Como la cantidad de parametros ti es mayor que la de ci (por consiguiente, la
cantidad de matrices tipo Toeplitz es mayor que la cantidad de matrices Ai),
se pueden asignar valores cualesquiera a n− 2 parametros ti. Por ejemplo, si se
asignan valores ai (i = 1, n− 2) a los siguientes parametros:
tn−12 +1, tn−1
2 +2, ..., tn−1, t−( n−12 +2), ..., t−(n−2), t−(n−1),
⇓ ⇓ ... ⇓ ⇓ ... ⇓ ⇓a1, a2, ..., an−1
2, an−1
2 +1, ..., an−3, an−2,
(5.3) queda como:
T = toep([
1, t1, t2, ..., tn−12
, a1, ..., an−12 −1, an−1
2
]
,[
1, t−1, t−2, ..., t−(n−12 +1), an−1
2 +1, ..., an−3, an−2
])
, (5.5)
112
es decir,
T = toep([
1, 0, 0, ..., 0, a1, ..., an−12 −1, an−1
2,]
,[
1, 0, 0, ..., 0, a n−12 +1, ..., an−3, an−2
])
+
+ t1toep ([0, 1, 0, ..., 0, 0, ..., 0, 0] , 0n) + t2toep ([0, 0, 1, ..., 0, 0, ..., 0, 0] , 0n) + ...+
+ tn−12
toep ([0, 0, 0, ..., 1, 0, ..., 0, 0] , 0n) + t−1toep (0n, [0, 1, 0, ..., 0, 0, ..., 0, 0]) +
+t−2toep (0n, [0, 0, 1, ..., 0, 0, ..., 0, 0])+...+t−(n−12 +1)toep (0n, [0, 0, 0, ..., 1, 0, ..., 0, 0]) .
Etiquetando cada matriz Toeplitz de la ecuacion anterior con Fi (i = 0, n):
T = F0 + t1F1 + t2F2 + ... + t(n−12 )Fn−1
2+ t−1Fn−1
2 +1 + ... + t−( n−12 +1)Fn
es claro ver que se tienen n parametros ti y n + 1 matrices tipo Toeplitz, de
tamano n× n, que coincide con el PIAVS cuando
c = [c1, c2, ..., cn−12
, cn−12 +1, ..., cn]t = [t1, t2, tn−1
2, t−1, ..., t−( n−1
2 +1)]t
y
A0 = F0, A1 = F1, A2 = F2, ..., An−12
= Fn−12
, ..., An = F−( n−12 ).
Por lo tanto, se ha mostrado que el PIEVS puede expresarse como un PI-
AVS, por lo que se pueden utilizar, entre otros, los algoritmos MI y LP para
resolverlo. En capıtulos anteriores, estos algoritmos se han definido como:
Algoritmo MI
1. Calcular A = A0 +∑
i=1 ciAi
2. Calcular [U, diag(S), V ] = svd(A)
3. Para k=1,2,...Mientras ‖S − S∗‖2 > tol
a. Calcular J = [uiAjvti ]i,j=1,n
b. Calcular b = [uiA0vti − S∗
i ]i=i,n
c. Resolver Jc = b
d. Calcular A = A0 +∑n
i=1 ciAi
e. Calcular [U, diag(S), V ] = svd(A)
Algoritmo EP
1. Calcular Atr = [tr(Ati ∗Aj)]i,j=1,n
2. Para k=1,2,...Mientras ‖S − S∗‖2 > tol
a. Calcular A = A0 +∑n
i=1 ciAi
b. Calcular [U, diag(S), V ] = svd(A)
c. Calcular btr = [tr(Ati(Udiag(S∗)V t −A0))]i=1,n
d. cvieja = c
d. Resolver Atrc = btr
Hasta ‖c− cvieja‖2 < tol
113
y la complejidad de tiempo para un problema de tamano n de los pasos que los
conforman se han estimado como:
TA(n) = 2n3tf
TJ(n) = (2n4 + O(n3))tf
Tb(n) = (2n3 + O(n2))tf
TAtr(n) = (n4 + O(n3))tf
Tbtr(n) = (4n3 + O(n2))tf
Tsvd(n) = 383 n3tf
TresolucionDeSistema(n) =(
23n3 + O(n2)
)tf
Algunos experimentos realizados para resolver el PIEVS con estos metodos
arrojan los resultados de la Tabla 5.1.
Tabla 5.1: Tiempos de ejecucion experimentales de MI y EP para el PIEVS
MI LP
n Iter ‖S − S∗‖2 Segundos Iter ‖S − S∗‖2 Segundos
20 3 8e-7 0.01 4867 1e-3 2.9
30 6 7e-7 0.03 1570 1e-3 2.3
39 4 2e-6 0.04 453 3e-4 1.4
40 3 5e-8 0.04 211 2e-4 0.69
50 4 3e-10 0.10 230 2e-4 1.3
60 – — — 77521 3e-2 691
90 7 6e-9 1.44 508 9e-4 15
100 5 1e-7 1.55 425 3e-4 17
150 4 3e-6 6.17 215 2e-4 36
200 3 8e-9 17.7 49 3e-4 35
250 4 2e-6 69 113 3e-4 173
300 3 6e-9 124 161 8e-4 454
350 – — — 55 4e-4 324
400 4 1e-7 532 267 7e-4 1893
450 – — — 58 3e-4 792
500 2 1e-6 644 56 2e-4 1199
Como es sabido (y ası se ve en la Tabla 5.1), la ventaja de MI es que re-
quiere pocas iteraciones para converger, siempre que se parta de un punto ini-
cial suficientemente cercano a la solucion (condicion que no se cumple para
n = {60, 350, 450}), mientras que LP siempre llega a una solucion, indepen-
dientemente del punto de partida, aunque debe realizar un numero elevado de
iteraciones para hacerlo. Se hace notar tambien otro hecho conocido con respecto
a la exactitud de MI que es de mejor calidad que la de EP.
Habiendo recordado MI y EP, en la siguiente seccion se desarrollan estos de
forma que tomen ventaja de la estructura de las matrices Toeplitz del PIEVS.
114
5.2. Propuestas de Resoluciones Especıficas del
PIEVS
Con el objeto de resolver eficientemente el PIEVS, se ha adaptado el calculo
de A, J , b, Atr, btr y svd de los algoritmos MI y EP para manejar matrices
tipo Toeplitz, las cuales se representan como se especifica a continuacion. Una
matriz tipo Toeplitz de tamano n × n se representa con un vector de tamano
2n− 1, en este vector se almacena el primer renglon de la matriz tipo Toeplitz
(desde el ultimo hasta el primer componente), seguido de la primera columna,
como en el siguiente diagrama:
Matriz Toeplitz General Representacion Vectorial
t0 t−1 t−2 t−3 ... t−(n−1)
t1 t0 t−1 t−2 ... t−(n−2)
t2 t1 t0 t−1 ... t−(n−3)
t3 t2 t1 t0 ... t−(n−4)
.
.....
.
.....
. . ....
t(n−1) t(n−2) t(n−3) t(n− 4) ... t0
→
2− n t−(n−1)
..
....
−2 t−3
−1 t−2
0 t−1
1 t0
2 t1
3 t2
4 t3...
...
n t(n−1)
Para representar una matriz tipo Toeplitz de la forma Ai, como en el siguien-
te diagrama, de tamano n× n, se utiliza una estructura de ındices (RENS) en
cuya entrada i se almacena el numero de renglon donde Ai tiene un 1 (renglon
3):
Matriz Toeplitz Especıfica RENS (Representacion vectorial)
Ai =
0 0 0 0 ... 0
0 0 0 0 ... 0
1 0 0 0 ... 0
0 1 0 0 ... 0
......
......
. . ....
0 0 0 1 ... 0
→
0
0
...
i 3
.
..
j 0
...
0
Analogamente a la matriz Ai, para una matriz tipo Toeplitz como la Aj
siguiente, se almacena en el componente j del vector de ındices COLS el numero
de columna donde Aj tiene un 1 (columna 2):
115
Matriz Toeplitz Especıfica COLS (Representacion vectorial)
Aj =
0 1 0 0 ... 0
0 0 1 0 ... 0
0 0 0 1 ... 0
0 0 0 0 ... 0
......
......
. . . 1
0 0 0 0 ... 0
→
0
0
.
..
i 0
..
.
j 2
...
0
El almacenamiento de los datos requeridos para la resolucion del PIEVS
es drasticamente menor al requerido para la resolucion del PIAVS, basta con
estimar el monto de memoria requerido para almacenar Ai (i = 1, n) en ambos
problemas, como en la siguiente tabla:
PIAVS PIEVS
A0 1 matriz de tamano 1 vector de tamano
n× n 2n− 1
A1,2,...,n n matrices de tamano 2 vectores de ındices
n× n de tamano n
Total dobles n3 + 2n2 4n− 4
Total enteros 2n
El producto de una matriz como Ai o Aj por un vector v consiste solamente
en el corrimiento de los elementos del vector, por lo que esta operacion no tiene
costo de operaciones en punto flotante; por ejemplo, con las matrices Ai y Aj
anteriores se tiene que:
Aiv = Ai
v1
v2
v3
.
..
vn−1
vn
=
0
0
v1
.
..
vn−3
vn−2
; Ajv = Aj
v1
v2
v3
.
..
vn−1
vn−2
=
v2
v3
v4
.
..
vn
0
Bajo estas condiciones, calcular A = A0 +∑n
i=1 ciAi consiste en sustituir
las sumas y multiplicaciones involucradas originalmente por asignaciones de ci
en A, como se hace en el Algoritmo 40.
116
Algoritmo 40 CalculaAestucturado
1. A← dcopy(2 ∗ n− 1, A0)
2. j ← 1
3. Para i = 1, n
3.1. Si RENSi 6= 0 entonces
ARENSi← cj
j ← j + 1
4. Si j ≤ n entonces
4.1. Para i = 1, n
4.1.1. Si COLSi 6= 0 entonces
A2−COLSi← cj
j ← j + 1
Por otra parte, como A es una matriz tipo Toeplitz, se puede transformar
en una matriz tipo Hankel, H , permutando sus columnas con una matriz de
permutacion R de la forma:
R =
1
1
1
. ..
1
es decir, H = AR ⇒ A = HRt. Partiendo de este hecho, para calcular la
descomposicion en valores singulares de A, se obtiene la descomposicion en
valores propios de H (aprovechando que H es tipo Hankel y, por lo tanto,
simetrica):
H = Qdiag(L)Qt,
donde Q es ortogonal, L = {L1, L2, ..., Ln} es un conjunto de reales, con |L1| ≥|L2| ≥ ... ≥ |Ln|. Si se expresa diag(L) como
diag(L) = signos(diag(L))|diag(L)| = G|diag(L)|,
con
G = signos(diag(L)) =
signo(L1)
signo(L2)
. . .
signo(Ln)
y
|diag(L)| =
|L1||L2|
. . .
|Ln|
,
117
entonces A = HRt queda como
A = QG|diag(L)|QtRt = Udiag(S)V t,
con U = QG, diag(S) = |diag(L)| y V = RQ. Una forma de obtener H =
Qdiag(L)Qt es tridiagonalizando H :
H = QTQt,
donde Q es ortogonal y T es la tridiagonal
T =
a1 b2
b2 a2 b3
b3 a3 b4
. . .. . .
. . .
bn−1 an−1 bn
bn an
;
y despues calculando la descomposicion en valores propios de T :
H = QPLP tQt,
de donde se define Q = QP . Con esto, los vectores U y V de la ecuacion (5.2), que
representan los vectores singulares izquierdos y derechos de A, respectivamente,
quedan definidos como:
U = QPG(diag(L)) (5.6)
y
V = RQP. (5.7)
Por lo tanto, calculando L, P , Q y G, se obtiene la descomposicion en valores
singulares de A. Estas operaciones minimizan los costos temporales de calculo
porque la tridiagonalizacion de una matriz tipo Hankel involucra operaciones
MatrizHankel−vector, que pueden calcularse eficientemente utilizando la FFT,
por lo que el tiempo teorico de ejecucion de la tridiagonalizacion mas el de la des-
composicion en valores propios de una matriz tridiagonal es de n2log2n+O(n2),
que es menor que el orden O(n3) de la descomposicion en valores singulares de
una matriz densa.
Se identifican, entonces, dos pasos fundamentales para la descomposicion en
valores singulares (svd) de una matriz tipo Toeplitz:
Paso 1. Tridiagonalizacion ortogonal de una matriz tipo Hankel
Paso 2. Descomposicion en valores propios de una matriz tridiagonal,
El Paso 1 tiene dos posibles implementaciones: la primera utilizando la
FFT [GvL96] (como en el algoritmo Tridiag1) y la segunda utilizando ruti-
nas de librerıas numericas, como dsytrd que tridiagonaliza una matriz y dorgtr
118
que construye la matriz de transformacion Q, ambas de LAPACK (como en
el algoritmo Tridiag2). Estas implementaciones, que utilizan los vectores a y b
para representar la diagonal y subdiagonal de la matriz tridiagonal T , respecti-
vamente, son:
Algoritmo Tridiag1
1. Inicializa q1
2. Para j=1,m
a. r ← FFT (H, qj)
b. aj ← productoEscalar(qj , r)
c. r ← r − ajqj − bj−1qj−1
d. r ← reortogonaliza(r, Q)
e. bj ← norma2(r)
f. qj+1 ← r/bj
Algoritmo Tridiag2
1. [a, b, Tau, ReflecHouse]← dsytrd(H)
2. Q← dorgtr(ReflecHouse, Tau)
Algunos ejemplos del comportamiento temporal de ambas implementaciones
se dan enseguida:
n svd con Tridiag1 svd con Tridiag2
250 0.13 0.16
500 0.59 1.01
1000 2.83 6.47
1500 7.59 20.1
2000 15.3 47.3
Tiempo(Seg)
con los tiempos de ejecucion de estos experimentos se confirma que la svd de
una matriz Hankel es mas eficiente cuando se utiliza Tridiag1.
Ahora bien, el calculo de J y b del algoritmo MI involucra a los vectores
singulares de A definidos como en (5.6) y (5.7) y, por lo tanto, involucra las
siguientes operaciones:
Ji,j = uiAjvti = (QPiGii) Aj (RQPi) =
= Q Pi︸ ︷︷ ︸
producto matriz-vector
Gii
︸ ︷︷ ︸
escalamiento de vector
Aj R Q Pi︸ ︷︷ ︸
producto matriz-vector︸ ︷︷ ︸
permutacion de renglones de vector︸ ︷︷ ︸
corrimiento de elementos de vector︸ ︷︷ ︸
producto escalar
119
bi = uiA0vti − S∗
i = (QPiGii) A0 (RQPi)− S∗i =
= Q Pi︸ ︷︷ ︸
producto matriz-vector
Gii
︸ ︷︷ ︸
escalamiento de vector
A0 R Q Pi︸ ︷︷ ︸
producto matriz-vector︸ ︷︷ ︸
permutacion de renglones de vector︸ ︷︷ ︸
multiplicacion FFT︸ ︷︷ ︸
producto escalar
−S∗i
cuyas complejidades de tiempo son
TJ(n) = 2n3 + O(n2)
y
Tb(n) = 2n3 + n2log2n + O(n2),
respectivamente. La complejidad de tiempo de J es menor que 2n4 + O(n3)
y la complejidad de tiempo de b es del mismo orden que 4n3 + O(n2), las
complejidades de tiempo del calculo de J y b con matrices no estructuradas,
respectivamente (como se vio en el Capıtulo 3).
Por otra parte, en el PIEVS la matriz Atr del algoritmo EP es una matriz
diagonal cuyos elementos son:
Atri,i =
{
n−RENSi + 1 si RENSi 6= 0
n− COLSi + 1 si COLSi 6= 0
Como los componentes del vector btr del algoritmo EP son
btri = tr(Ati(Udiag(S∗)V t −A0)) = tr(At
iX),
entonces X = Udiag(S∗)V t − A0 se calcula una sola vez. Las operaciones para
calcular X tambien utilizan los vectores singulares de A definidos en (5.6) y 5.7,
estas son:
X = Udiag(S∗)V t −A0 = (QPG)diag(S∗)(QPR)t −A0 =
QP︸︷︷︸
producto matriz-matriz
G
︸ ︷︷ ︸
escalamiento de columnas
diag(S∗)
︸ ︷︷ ︸
escalamiento de columnas
( QP︸︷︷︸
producto matriz-matriz
R)t
︸ ︷︷ ︸
permutacion de columnas
︸ ︷︷ ︸
producto matriz-matriz
−A0
︸ ︷︷ ︸
suma matriz-matriz
y su complejidad de tiempo es 6n3 +O(n2). Habiendo calculado X el calculo de
btr se reduce a seleccionar elementos de X :
120
btri = tr(Ati X) =
n∑
j=1
AijXt
j︸ ︷︷ ︸
seleccion de un elemento del vectorXj
por lo que su complejidad de tiempo es 6n3+O(n2). En este caso no se involucran
matrices Toeplitz de las que se pueda tomar ventaja para minimizar los costos
del calculo de btr.
Con estas nuevas rutinas se pueden construir los algoritmos MIE (MI Es-
tructurado) y EPE (EP Estructurado) que resuelven el PIEVS eficientemente
y con un tiempo de ejecucion drasticamente menor al conseguido con MI y EP
aplicados al PIEVS, ya que el orden de complejidad de cada algoritmo es:
T (n)
MI (44/3)n3 + O(n) + k{2n4 + O(n3)}MIE log2n n2 + O(n2) + k{(20/3)n3 + 2log2n n2 + O(n2)}EP n4 + O(n3) + k{(46/3)n3 + O(n2)}EPE n + k{6n3 + log2n n2 + O(n2)}
es decir, MIE es de un orden menor que MI y EPE es dos ordenes menor que
EP en la operacion mas costosa localizada antes del ciclo (el calculo de Atr) y
la constante 46/3 de n3 de EP se reduce a 6 en EPE. La reduccion del orden
de complejidad se puede comprobar experimentalmente, algunos resultados de
pruebas realizadas en el cluster Kefren se muestra en la Tabla 5.2, que corres-
ponden a los mismos casos de la Tabla 5.1.
Tabla 5.2: Tiempos de ejecucion experimentales de MIE y EPE para el PIEVS
MIE EPE
n iter ‖S − S∗‖2 seg iter ‖S − S∗‖2 seg
20 3 8e-7 0.01 4867 1e-3 1.85
30 6 7e-7 0.01 1570 1e-3 1.48
40 3 5e-8 0.03 211 2-4 0.42
50 4 3e-10 0.03 230 2-4 0.79
90 7 6e-9 0.18 508 9-4 8.22
100 5 1e-7 0.19 425 3-4 9.01
150 4 3e-6 0.45 215 2-4 14.5
200 3 8e-9 0.76 49 3-4 7.73
250 4 2e-6 1.93 113 3-4 40
300 3 6e-9 2.84 161 8-4 107
400 4 1e-7 8.6 267 7-4 494
500 2 1e-6 9.48 56 2-4 183
El contraste de tiempos de ejecucion para estos experimentos entre MI y
MIE, y entre EP y EPE se ilustra en la Figura 5.1.
121
0 50 100 150 200 250 300 350 400 450 5000
100
200
300
400
500
600
700
m
Tie
mpo
Exp
erim
enta
l (se
gund
os)
MI MIE
0 50 100 150 200 250 300 350 400 450 5000
200
400
600
800
1000
1200
1400
1600
1800
2000
m
Tie
mpo
Exp
erim
enta
l (se
gund
os)
EP EPE
Figura 5.1: Tiempos de ejecucion experimentales con algoritmos PIAVS vs PIEVS sobre los
mismos casis de prueba
Por lo tanto, se ha disenado e implementado MIE y EPE, un par de algorit-
mos eficientes que resuelven el PIEVS y cuyas complejidades de tiempo son de
un orden menor al ofrecido por MI y EP. En la siguiente seccion se plantean las
versiones paralelas de MIE y EPE con el fin de reducir aun mas los tiempos de
122
ejecucion y poder resolver el PIEVS para n de mayor tamano.
5.3. Paralelizacion de Resoluciones Especıficas
del PIEVS
El kernel de MIE y EPE es la descomposicion en valores singulares (svd) de
una matriz tipo Hankel, ya que sus valores y vectores singulares se utilizan en
el calculo de J , b y btr; por lo tanto, la paralelizacion de MIE y EPE depende
de la paralelizacion de la svd.
Para paralelizar la svd se trata de aprovechar los bajos costos de la FFT
(operacion secuencial) y se trata de distribuir la carga de calculo entre los proce-
sadores, de modo que queden ociosos el menor tiempo posible.
Despues de haber probado varios disenos para paralelizar la svd de la matriz
Toeplitz A, teniendo en cuenta que el resultado de este calculo deje replicados los
valores singulares y distribuidos los vectores singulares de A en los procesadores,
se opto por el siguiente (el mas eficiente):
Suponer que se tiene una malla de Prc = Pr ×Pc procesadores. Cada proce-
sador aplica el algoritmo Tridiag1 para reducir la matriz Hankel RA a una
tridiagonal T :
RA = QTQt = Q
a1 b2
b2 a2 b3
b3 a3 b4
. . .. . .
. . .
bn−1 an−1 bn
bn an
Qt,
con esto los vectores a (diagonal de T ) y b (subdiagonal de T ) y la matriz
Q quedan replicados en los procesadores y listos para calcular en paralelo los
valores y vectores propios de T :
T = Pdiag(L)P t = P |diag(L)|GP t = Pdiag(S)GP t
Para calcular los valores propios de T se hace uso nuevamente de las estruc-
turas de datos longi, low y up para que cada procesador se encargue de calcular
un subconjunto de valores propios. Por ejemplo, si Prc = 2×2 y n = 9, entonces
Pr,Pc Procesador longi low up Valores propios calculados
0,0 0 3 1 3 {L1, L2, L3}0,1 1 2 4 5 {L4, L5}1,0 2 2 6 7 {L6, L7}1,1 3 2 8 9 {L8, L9}
123
Despues los valores propios se replican y se ordenan decrecientemente de
acuerdo a su valor absoluto (como se espera tener los valores singulares de A).
Por ejemplo, suponer que en el caso Prc = 2 × 2 y n = 9 los valores propios
quedan replicados en el siguiente orden:
|L5| > |L3| > |L1| > |L8| > |L2| > |L7| > |L4| > |L9| > |L6| =
= S1 > S2 > S3 > S4 > S5 > S6 > S7 > S8 > S9.
El siguiente paso es calcular los vectores propios de T . Este calculo debe
distribuirse a conveniencia para facilitar los futuros calculos de J , b y btr. Para
el caso de J (y analogamente para b):
Jik = utiAkvi = (RQPi)
tAk(QPiSgni)
cada renglon i de J requiere el i-esimo vector propio de T . Entonces, en el
ejemplo de Prc = 2 × 2 y n = 9, si el tamano de bloque es 2, J se encuentra
distribuida de acuerdo a ScaLAPACK como:
Procesador0,0 Procesador0,1
J11 J12 J15 J16 J19 J13 J14 J17 J18
J21 J22 J25 J26 J29 J23 J24 J27 J28
J51 J52 J55 J56 J59 J53 J54 J57 J58
J61 J62 J65 J66 J69 J63 J64 J67 J68
J91 J92 J95 J96 J99 J93 J94 J97 J98
Procesador1,0 Procesador1,1
J31 J32 J35 J36 J39 J33 J34 J37 J38
J41 J42 J45 J46 J49 J43 J44 J47 J48
J71 J72 J75 J76 J79 J73 J74 J77 J78
J81 J82 J85 J86 J89 J83 J84 J87 J88
por lo que cada procesador requiere de los siguientes subconjuntos de vectores
propios:
Procesador0,0 Procesador0,1
PS1PS2
PS5PS6
PS9PS1
PS2PS5
PS6PS9
PL5PL3
PL2PL7
PL6PL5
PL3PL2
PL7PL6
Procesador1,0 Procesador1,1
PS3PS4
PS7PS8
PS3PS4
PS7PS8
PL1PL8
PL4PL9
PL1PL8
PL4PL9
124
cuya distribucion corresponde a una cıclica por renglones de procesadores. Por
lo tanto, los pasos para calcular los valores y vectores propios de T estan en el
Algoritmo 41, estos se esquematizan para el ejemplo Prc = 2× 2 y n = 9 como
sigue:
paso Procesador0,0 Procesador0,1
1 L = [L1, L2, L3,−,−,−,−,−,−] L = [−,−,−, L4, L5,−,−,−,−]
2 L = [L1, L2, L3, L4, L5, L6, L7, L8, L9] L = [L1, L2, L3, L4, L5, L6, L7, L8, L9]
3 S = [L5, L3, L1, L8, L2, L7, L4, L9, L6] S = [L5, L3, L1, L8, L2, L7, L4, L9, L6]
4 P = [P5, P3, P2, P7, P6] P = [P5, P3, P2, P7, P6]
5 G = [sig(L5), sig(L3), sig(L2), sig(L7), sig(L6)] G = [sig(L5), sig(L3), sig(L2), sig(L7), sig(L6)]
6 S = abs[L5, L3, L1, L8, L2, L7, L4, L9, L6] S = abs[L5, L3, L1, L8, L2, L7, L4, L9, L6]
S = [S1, S2, S3, S4, S5, S6, S7, S8, S9] S = [S1, S2, S3, S4, S5, S6, S7, S8, S9]
paso Procesador1,0 Procesador1,1
1 L = [−,−,−,−,−, L6, L7,−,−] L = [−,−,−,−,−,−,−, L8, L9]
2 L = [L1, L2, L3, L4, L5, L6, L7, L8, L9] L = [L1, L2, L3, L4, L5, L6, L7, L8, L9]
3 S = [L5, L3, L1, L8, L2, L7, L4, L9, L6] S = [L5, L3, L1, L8, L2, L7, L4, L9, L6]
4 P = [P1, P8, P4, P9] P = [P1, P8, P4, P9]
5 G = [sig(L1), sig(L8), sig(L4), sig(L9)] G = [sig(L1), sig(L8), sig(L4), sig(L9)]
6 S = abs[L5, L3, L1, L8, L2, L7, L4, L9, L6] S = abs[L5, L3, L1, L8, L2, L7, L4, L9, L6]
S = [S1, S2, S3, S4, S5, S6, S7, S8, S9] S = [S1, S2, S3, S4, S5, S6, S7, S8, S9]
Notar en el esquema anterior (y en el Algoritmo 41) que el paso 1 es una ope-
racion paralela distribuida entre todos los procesadores de la malla, y los pasos
4 y 5 son operaciones distribuidas entre renglones de procesadores.
Algoritmo 41 ParaleloCalculaEigJb
1. Llow:up ← dstebz(longi, a, b)
2. L← Replicar(L) /* Dispersion Todos a Todos */
3. S ← OrdenarPorValorAbsoluto(L)
4. P:,1:n/Pr← dstein(n/Pc, S1:n/Pr
, a, b)
5. Sgn← sig(S)
6. S ← abs(S)
Para el caso btr:
btri = tr(AtiX), (i = 1, n) (5.8)
donde
X = Udiag(S∗)V t −A0 = QPGdiag(S∗)(RQP )t −A0 (5.9)
la idea es distribuir el calculo de la multiplicacion matriz-matriz QP entre todos
los procesadores, haciendo uso de longi, low y up; para el ejemplo Prc = 2× 2
y n = 9 la distribucion serıa la siguiente:
125
Procesador0,0 Procesador0,1
QP:,1:3 = U:,1:3 QP:,4:5 = U:,4:5
Procesador1,0 Procesador1,1
QP:,6:7 = U:,6:7 QP:,8:9 = U:,8:9
por lo que cada procesador requiere de los siguientes subconjuntos de vectores
propios de T :
Procesador0,0 Procesador0,1
PS1PS2
PS3PS4
PS5
PL5PL3
PL1PL8
PL2
Procesador1,0 Procesador1,1
PS6PS7
PS8PS9
PL7PL4
PL9PL6
En este caso, para calcular los valores y vectores propios de T se tiene el Algo-
ritmo 42, cuyo esquema para el ejemplo Prc = 2× 2 y n = 9 es:
paso Procesador0,0 Procesador0,1
1 L = [L1, L2, L3,−,−,−,−,−,−] L = [−,−,−, L4, L5,−,−,−,−]
2 L = [L1, L2, L3, L4, L5, L6, L7, L8, L9] L = [L1, L2, L3, L4, L5, L6, L7, L8, L9]
3 S = [L5, L3, L1, L8, L2, L7, L4, L9, L6] S = [L5, L3, L1, L8, L2, L7, L4, L9, L6]
4 P = [P5, P3, P1,−,−,−,−,−,−] P = [−,−,−, P8, P2,−,−,−,−]
5 Sgn = [sig(L5), sig(L3), sig(L1),−,−,−,−,−,−] Sgn = [−,−,−, sig(L8), sig(L2),−,−,−,−]
6 S = abs[L5, L3, L1, L8, L2, L7, L4, L9, L6] S = abs[L5, L3, L1, L8, L2, L7, L4, L9, L6]
S = [S1, S2, S3, S4, S5, S6, S7, S8, S9] S = [S1, S2, S3, S4, S5, S6, S7, S8, S9]
paso Procesador1,0 Procesador1,1
1 L = [−,−,−,−,−, L6, L7,−,−] L = [−,−,−,−,−,−,−, L8, L9]
2 L = [L1, L2, L3, L4, L5, L6, L7, L8, L9] L = [L1, L2, L3, L4, L5, L6, L7, L8, L9]
3 S = [L5, L3, L1, L8, L2, L7, L4, L9, L6] S = [L5, L3, L1, L8, L2, L7, L4, L9, L6]
4 P = [−,−,−,−,−, P7, P4,−,−] P = [−,−,−,−,−,−,−, P9, P6]
5 Sgn = [−,−,−,−,−, sig(L7), sig(L4),−,−] Sgn = [−,−,−,−,−,−,−, sig(L9), sig(L6)]
6 S = abs[L5, L3, L1, L8, L2, L7, L4, L9, L6] S = abs[L5, L3, L1, L8, L2, L7, L4, L9, L6]
S = [S1, S2, S3, S4, S5, S6, S7, S8, S9] S = [S1, S2, S3, S4, S5, S6, S7, S8, S9]
En este esquema, tanto el paso 1, como los pasos 4 y 5, estan completamente
paralelizados, pues los calculos involucrados estan distribuidos entre todos los
procesadores de la malla.
126
Algoritmo 42 ParaleloCalculaEigbtr
1. Llow:up ← dstebz(longi, a, b)
2. L← Replicar(L) /* Dispersion Todos a Todos */
3. S ← OrdenarPorValorAbsoluto(L)
4. P:,low:up ← dstein(longi, Slow:up, a, b)
5. Sgn← sig(S)
6. S ← abs(S)
Ya sea que se utilice el Algoritmo 41 o 42, la svd de la matriz Hankel RA
sigue los pasos del Algoritmo 43.
Algoritmo 43 ParaleloCalculaSVD
1. [a, b, Q]← Tridiag1(H)
2. [P, S, Signos]← ParaleloCalculaEig(a, b)
Al igual que en el caso secuencial, otra alternativa para tridiagonalizar la
matriz Hankel es utilizar la rutina paralela de ScaLAPACK pdsytrd. Si se susti-
tuye esta rutina en el paso 1 del Algoritmo ParaleloCalculaSVD, experimentos
numericos muestran en la Tabla 5.3 que los tiempos de ejecucion resultantes son
mayores que cuando se utiliza Tridiag1.
Tabla 5.3: Tiempos de ejecucion experimentales de dos implementaciones paralelas de la svd
SVD Paralelo usando
n Prc Trid1 pdsytrd
500 1 0.61 1.14
2 0.41 1.03
4 0.34 1.25
1000 1 2.8 7.01
2 2.1 5.81
4 1.6 5.31
1500 1 7.7 12.9
2 5.9 17.1
4 5.1 14.8
2000 1 15.8 52.1
2 12.2 39.9
4 10.8 34.4
Segundos
Habiendo paralelizado la svd de la matriz Toeplitz A, la tarea ahora es
disenar los algoritmos paralelos para calcular J , b y btr. Con la distribucion
adecuada de P y Sgn que da el Algoritmo 41 para calcular J y b se utiliza
el Algoritmo 44 que deja la matriz J y el vector b particionados en bloques y
distribuidos cıclicamente en los procesadores conforme la distribucion ScaLA-
PACK.
127
Algoritmo 44 ParaleloCalculaJbEstructurado
1. Para i = 1,n/Pr
1.1. v ← dgemm(n, n, n, Q, Pi)
1.2. u← reverso(v)
1.3. x← multRapFourier(n, n, ut, A0)
1.4. v ← dscal(n, Sgni, v)
1.5. bi ← S∗iglobal − ddot(n, x, v)
1.6. Para k=1,n/Pc
1.6.1. Si RENSkglobal 6= 0
xRENSkglobal :n ← v1:n−RENSkglobal
1.6.2. Si COLSkglobal 6= 0
x1:n−COLSkglobal← vCOLSkglobal:n
1.6.3. Ji,k ← ddot(n, u, x)
Para calcular en paralelo el vector btr (de acuerdo a 5.8) se utiliza la distribu-
cion de P y Sgn dada por el Algoritmo 42, que permite, como se especifico en
parrafos anteriores, la distribucion de la multiplicacion matriz-matriz QP de la
ecuacion (5.9) entre todos los procesadores, como se ve en el paso 1 del siguiente
esquema:
paso Procesador0,0 Procesador0,1
1 [U1, U2, U3] = Q[P1, P2, P3] [U4, U5] = Q[P4, P5]
2 [V1, V2, V3] = [U1, U2, U3] [V4, V5] = [U4, U5]
3 [U1, U2, U3] = [G11U1,G22U2,G33U3] [U4, U5] = [G44U4,G55U5]
4 [U1, U2, U3] = [S∗1U1, S∗
2U2, S∗3U3] [U4, U5] = [S∗
4U4, S∗5U5]
5 Replicar U ,V (Replicar QPGdiag(S∗), QP )
6 V =permuta renglones(V ) V =permuta renglones(V )
7
2
6
4
(Ut)1
(Ut)2
(Ut)3
3
7
5=
2
6
4
(Ut)1
(Ut)2
(Ut)3
3
7
5V t
"
(Ut)4
(Ut)5
#
=
"
(Ut)4
(Ut)5
#
V t
8 Replicar U (Replicar Udiag(S∗)V t)
9 aux← Udiag(S∗)V t − A0 aux← Udiag(S∗)V t − A0
10 btr1,2,3 = tr(auxAt1,2,3) btr4,5 = tr(auxAt
4,5)
paso Procesador1,0 Procesador1,1
1 [U6, U7] = Q[P6, P7] [U8, U9] = Q[P8, P9]
2 [V6, V7] = [U6, U7] [V8, V9] = [U8, U9]
3 [U6, U7] = [G66U6, G77U7] [U8, U9] = [G88U8,G99U9]
4 [U6, U7] = [S∗6U6, S∗
7U7] [U8, U9] = [S∗8U8, S∗
9U9]
5 Replicar U ,V (Replicar QPGdiag(S∗), QP )
6 V =premuta renglones(V ) V =permuta renglones(V )
7
"
(Ut)6
(Ut)7
#
=
"
(Ut)6
(Ut)7
#
V t
"
(Ut)8
(Ut)9
#
=
"
(Ut)8
(Ut)9
#
V t
8 Replicar U (Replicar Udiag(S∗)V t)
9 aux← Udiag(S∗)V t − A0 aux← Udiag(S∗)V t − A0
10 btr6,7 = tr(auxAt6,7) btr8,9 = tr(auxAt
8,9)
Despues se hace una copia de U en V (paso 2 del esquema anterior) para
128
escalar V con Sgn y U con S∗ (pasos 3 y 4 del esquema anterior). El siguiente
paso (paso 5) es hacer una replica de U (QPS∗) y V (QPSgn) para proseguir
con el calculo replicado de RQPS∗ que se consigue con el reverso de U (paso
6) y con el calculo distribuido de (RQPS∗)(QPSgn)t = UV t en el paso 7 del
mismo esquema (con lo que se ha conseguido realizar la operacion US∗V t, donde
U y V denotan los vectores izquierdos y derechos de A, respectivamente). En el
paso 8 se replica U para calcular replicadamente la ecuacion 5.9 (paso 9). Por
ultimo, cada procesador calcula un subconjunto de elementos de btr, como en
el paso 10 del esquema anterior, los elementos de btr quedan distribuidos en los
procesadores. Este procedimiento es el de los Algoritmos 45 y 46.
Algoritmo 45 ParaleloCalculabtrEstructurado (parte 1/2)
1. /* U:,low:up ← QP:,low:up */
U:,low:up ← dgemm(m, longi, m, Q, P:,low:up)
2. V:,low:up ← U:,low:up
3. /* U:,low:up ← G(QP ):,low:up */
Para i = low, up
U:,i ← dscal(n, Gii, U:,i)
4. /* U:,low:up ← (QPG):,low:updiag(S∗) */
Para i = low, up
U:,i ← dscal(n, S∗i , U:,i)
5. /* Replica U y V (dispersion todos a todos, mensajes de longitud n2/Prc) */
Para i = 0, Prc − 1
Si procesador i {enviar}dgebs2d(′All′, m, longi, U:,low:up)
dgebs2d(′All′, m, longi, V:,low:up)
sino {recibir}U:,low:up ← dgebr2d(′All′, m, longi, U:,low:up)
V:,low:up ← dgebr2d(′All′, m, longi, V:,low:up)
6. /* V ← RQP */
V ←permutaRenglones(V )
7. /* Ulow:up,: ← (QPGdiag(S∗))low:up,:(RQP )t */
Ulow:up,: ← dgemm(longi, m, m, Ulow:up,:, Vt)
8. /* Replica U (dispersion todos a todos, mensaje de longitud n2/Prc) */
Para i = 0, Prc − 1
Si procesador i /*enviar*/
dgebs2d(′All′, longi, n, Ulow:up,:)
sino /*recibir*/
Ulow:up,: ← dgebr2d(′All′, longi, n, Ulow:up,:)
129
Algoritmo 46 ParaleloCalculabtrEstructurado (parte 2/2)
9. /* aux← Udiag(S∗)V t −A0 */
9.1. Para i = n, n− 1, n− 2, ..., 1
Si (A0(i) 6= 0)
ren← i; col ← 1
Mientras (ren ≤ n) & (col ≤ n)
auxren,col ← Uren,col −A0i
ren← ren + 1; col ← col + 1
9.2. ii← 2
9.3. Para i = 0,−1,−2, ..., 2− n
Si (A0i6= 0)
col ← ii; ren← 1
Mientras(col ≤ n) & (ren ≤ n)
auxren,col ← Uren,col −A0i
ren← ren + 1; col ← col + 1
ii← ii + 1
10. /* bT ri ← tr((Udiag(S∗)V t −A0)Ati) */
10.1. i← 1
10.2. Para ii = low, up
Si (RENSii 6= 0)
ren← RENSii; col← 1
Mientras (col ≤ n) & (ren ≤ n)
bT ri = bT ri + auxren,col
ren← ren + 1; col ← col + 1
i← i + 1
10.3.i← 1
10.4. Para ii = low, up
Si (COLSii 6= 0)
col← COLSii; ren← 1
Mientras (col ≤ n) & (ren ≤ n)
bT ri ← bT ri + auxren,col
ren← ren + 1; col ← col + 1
i← i + 1
El calculo paralelo de Atr se da en el Algoritmo 47, que al igual que btr,
deja a Atr distribuida entre todos los procesadores. Por ser Atr diagonal, la
resolucion del sistema Atrc = btr se reduce a dividir cada elemento de btr por el
correspondiente elemento de la diagonald de Atr.
130
Algoritmo 47 ParaleloCalculaAtrEstructurado
1. j ← 1
2. Para i = 1,n/Prc
2.1. Si (RENSi 6= 0) Atrj = n−RENSi + 1
2.2. Si (COLS − i 6= 0) Atrj = Atrj + n− COLSi + 1
2.3. j ← j + 1
Ası, MIE paralelo y EPE paralelo estan en los Algoritmos 48 y 49, respecti-
vamente.
Algoritmo 48 MIEParalelo
1. A← CalculaAestructurado(A0, ..., An, c) /* operacion replicada */
2. [P, Q, diag(S), G]← ParaleloCalculaSVD(AR)
3. error ← ParaleloCalculaError(S, S∗)
4. Para k=1,2,...Mientras error > tol
4.1. [J, b]← ParaleloCalculaJbEstructurado(P, Q, S∗, G, A1, ...An)
4.2. c← pdgesv(J, b)
4.3. c← pdgemr2d( nPr
, c) /* redistribuye c */
4.4. Si procesador 0 entonces /* envıa para replicar c */
dgebs2d(′All′, n, c)
Sino /* recibe para replicar c */
c← dgebr2d(′All′, n, c)
4.5. A← CalculaAestructurado(A0, ..., An, c) /* operacion replicada */
4.6. [P, Q, diag(S), G]← ParaleloCalculaSVD(AR)
4.7. error ← ParaleloCalculaError(S, S∗)
131
Algoritmo 49 EPEParalelo
1. Atr ← ParaleloCalculaAtrEstructurado(A1, A2, ..., An)
2. Para k=1,2,...
2.1. A← CalculaAestructurado(A0, ..., An, c) /* operacion replicada */
2.2. [P, Q, diag(S), G]← ParaleloCalculaSVD(AR)
2.3. btr ← ParaleloCalculabtrEstructurado(A0, ..., An, P, Q, S∗, G)
2.4. cvieja← c
2.5. Para i = low, up
ci ← btri/Atri
2.6. Para i = 0, Prc − 1 /* replica c */
Si procesador i entonces /* envıa */
dgebs2d(′All′, longi, clow:up)
Sino /* recibe */
c← dgebr2d(′All′, longi, clow:up)
2.7 error ← ParaleloCalculaError(c, cvieja)
Hasta error < tol
5.4. Prestaciones de Resoluciones Paralelas del
PIEVS
Es de esperar, al igual que en el caso secuencial, que la paralelizacion del MIE
y EPE tengan una complejidad de tiempo de menor orden que los algoritmos
paralelos del PIAVS (MI y EP), como se observa en los tiempos aritmeticos:
MI paralelo:
44n3
3Prc+ O
(n
Prc
)
+ k
{2n4
Prc+ O
(n3
Prc
)}
MIE paralelo:
n2log2n + O
(n2
Prc
)
+ k
{8n3
3Prc+
2n3
Pr+ n2log2n +
n2log2n
Pr+ O
(n2
Pr
)}
EP paralelo:
n4
Prc+ O
(n3
Prc
)
+ k
{56n3
3Prc+ O
(n2
Prc
)}
EPE paralelo:
k
{4n3
Prc+ n2log2n + n2 + O
(n2
Prc
)}
en los tiempos de establecimiento de comunicacion:
MI paralelo:
17n + k{
2log2
√
Prcn2 + O
(√
Prcn)}
132
MIE paralelo:
3
2(Pr + Pc) + k
{
nlog2Prc +3
2(Pr + Pc) + O(n)
}
EP paralelo: √Prcn
2
2+ O
(√
Prcn)
+ k
{√Prcn
2
}
EPE paralelo:
kO(√
Prc
)
y en los tiempos de transferencia:
MI paralelo:
14log2Prcn2
√Prc
+ k
{2log2
√Prcn
3
√Prc
+ O(√
Prcn2)}
MIE paralelo:
n
Pc+
n
Pr+ k
{log2Prc
4
n2
√Prc
+n
Pc+
n
Pr
}
EP paralelo:√
Prcn2
4+ O
(√
Prcn)
+ k
{14log2Prcn
2
√Prc
+ O(√
Prcn)}
EPE paralelo:
k
{6n2
√Prc
+ O
(n√Prc
)}
Con estos tiempos de ejecucion se puede estimar la tendencia asintotica del
Speedup de los algoritmos, obteniendose los siguientes resultados:
limn→∞
SMIE(n, Prc) = limn→∞
T (n, 1)
T (n, Prc)
(3Prc
14n3tf
)(3Prc
14n3tf
)−1
≈ 7Pr
3= O(Pr)
limn→∞
SEPE(n, Prc) = limn→∞
T (n, 1)
T (n, Prc)
(Prc
4n3tf
)(Prc
4n3tf
)−1
= Prc;
los Speedup de MIE y EPE indican que se tienen prestaciones optimas para
valores grandes de n, pero en el caso de MIE el optimo se alcanza cuando se
utilizan vectores columnas de procesadores, es decir mallas de la forma Prc =
Pr × 1, lo que no es de sorprender si se remite a la distribucion adecuada de
los vectores propios de la matriz Hankel RA para calcular J y b (los pasos mas
costosos de MIE) que consiste en una distribucion cıclica por renglones. Para
corroborar esta observacion se han realizado algunas pruebas numericas en el
cluster Kefren para n = 1500; los resultados que se han obtenido son:
133
Prc MIE (seg) EPE (seg)
1× 4 27 14.69
4× 1 15 14.69
2× 2 19 14.68
1× 8 23 10.61
8× 1 10 10.61
2× 4 15 10.60
4× 2 12 10.61
en estos se constata que con la malla Prc = 4 × 1 y Prc = 8 × 1 MIE obtiene
mejores tiempos de ejecucion, mientras que EPE los obtiene practicamente con
cualquier malla.
A continuacion, se presentan algunos resultados experimentales para diferen-
tes tamanos de n considerando la ejecucion de una sola iteracion de los metodos.
En las Tabla 5.4 estan los tiempos de ejecucion medidos y los correspondientes
Speedups de MIE.
Tabla 5.4: Tiempos de ejecucion y Speedup experimentales de MIE paralelo
MIE n n
Prc 1000 1500 2000 2500 3000 1000 1500 2000 2500 3000
1 14.8 44 101 200 342 1 1 1 1 1
2 8.3 26 53 114 194 1.8 1.7 1.8 1.7 1.8
4 5.3 15 35 65 109 2.8 2.8 2.8 3.1 3.1
6 4.5 12 28 51 84 3.3 3.6 3.6 3.9 4.1
8 3.8 10 23 44 74 3.9 4.2 4.3 4.5 4.6
10 4.1 9.7 21 40 67 3.6 4.5 4.7 5.0 5.1
14 3.9 9.5 19 35 57 3.7 4.6 5.3 5.7 6.0
16 3.7 8.6 18 33 54 3.9 5.1 5.6 6.1 6.3
Tiempo (seg) SpeedUp
Se observan decrementos significativos de tiempos de ejecucion para los casos
grandes de n; sin embargo, con respecto al Speedup, aunque este va mejorando
conforme n crece, las prestaciones son buenas con 2 procesadores y aceptables
con 4, y a partir de 6 procesadores el Speedup empieza a degradarse. El mismo
fenomeno se observa para EPE en la Tabla 5.5.
134
Tabla 5.5: Tiempos de ejecucion y Speedup experimentales de EPE paralelo
EPE n n
Prc 1000 1500 2000 2500 3000 1000 1500 2000 2500 3000
1 12 39 89 174 293 1 1 1 1 1
2 7.3 23 51 100 166 1.7 1.7 1.7 1.7 1.8
4 4.8 14 32 62 103 2.5 2.8 2.8 2.8 2.8
6 4.1 11 26 50 81 3.0 3.3 3.4 3.5 3.6
8 3.6 10 23 44 71 3.4 3.7 3.9 3.9 4.1
10 3.5 9.9 21 40 65 3.5 3.9 4.1 4.3 4.3
14 3.2 9.1 19 36 58 3.8 4.2 4.5 4.6 4.8
16 3.1 8.9 18 35 56 3.9 4.4 4.8 4.9 5.2
Tiempo (seg) SpeedUp
El comportamiendo del Speedup de estos algoritmos se debe, en primer lu-
gar, a que la version secuencial de los mismos ha resultado ser un algoritmo
altamente eficiente, por lo que se necesitarıan versiones paralelas en las que
la mayorıa de sus operaciones deberıan ejecutarse en paralelo con el mınimo
numero de comunicaciones. Sin embargo, en los algoritmos paralelos que se han
disenado no todas las operaciones se han paralelizado, algunas por ser altamente
eficientes secuencialmente (como la FFT involucrada en la tridiagonalizacion de
una matriz tipo Hankel, lo que implica que la svd de una matriz tipo Hankel
este parcialmente paralelizada) y otras, por evitar comunicaciones entre proce-
sadores, se ejecutan replicadamente en cada procesador. Estos factores se ven
reflejados en el orden de complejidad de tiempo del algoritmo secuencial:
Tsvd secuencial =(n2log2n + O(n2)
)tf
contrastado con el orden de complejidad de tiempo del algoritmo paralelo:
Tsvd paralelo =
(
n2log2n + O
(n2
√Prc
))
tf + O(√
Prc
)
tm + O
(m√Prc
)
tv
en el caso de MIE y
Tsvd paralelo =
(
n2log2n + O
(n2
Prc
))
tf + O(√
Prc
)
tm + O
(m√Prc
)
tv
en el caso de EPE. Graficamente el Speedup de MIE y EPE estan en la Figu-
ra 5.2.
135
0 2 4 6 8 10 12 14 161
2
3
4
5
6
7
Procesadores
Spe
edup
de
MIE
n=500 n=1000n=1500n=2000n=3000
0 2 4 6 8 10 12 14 161
1.5
2
2.5
3
3.5
4
4.5
5
5.5
Procesadores
Spe
edup
de
EP
E
n=500 n=1000n=1500n=2000n=3000
Figura 5.2: Speedup experimentales de MIE y EPE en el cluster Kefren
La eficiencia de MIE y EPE se han calculado en las Tablas 5.6 y 5.7, respec-
tivamente.
Tabla 5.6: Eficiencia Experimental de MIE
Prc Aprovechamiento
1 100 % 100 % 100 % 100 % 100 %
2 90 % 85 % 90 % 85 % 90 %
4 70 % 70 % 70 % 77 % 77 %
6 55 % 60 % 60 % 65 % 68 %
8 48 % 52 % 53 % 56 % 57 %
10 36 % 45 % 47 % 50 % 51 %
14 26 % 32 % 37 % 40 % 42 %
16 24 % 31 % 35 % 38 % 39 %
n 1000 1500 2000 2500 3000
Tabla 5.7: Eficiencia Experimental de EPE
Prc Aprovechamiento
1 100 % 100 % 100 % 100 % 100 %
2 85 % 85 % 85 % 85 % 85 %
4 62 % 70 % 70 % 70 % 70 %
6 50 % 55 % 56 % 58 % 58 %
8 42 % 46 % 48 % 48 % 48 %
10 35 % 39 % 41 % 43 % 43 %
14 27 % 30 % 32 % 32 % 32 %
16 24 % 27 % 30 % 30 % 30 %
n 1000 1500 2000 2500 3000
Para el PIEVS MIE es el algoritmo paralelo que mejor aprovecha los proce-
sadores que intervienen en su resolucion, pues alcanza eficiencas aceptables (de
al menos 70%) para 4 procesadores en todos los experimentos, mientras que
136
EPE lo hace tambien con 4 procesadores, pero a partir de n = 1500. A partir de
6 procesadores las mejores eficiencias empiezan a decrecer en ambos algoritmos.
La escalabilidad de los algoritmos se ha medido haciendo crecer en la misma
proporcion el tamano del problema y el numero de procesadores. Consideran-
do que, en terminos de orden superior, la complejidad de tiempo de MIE y
EPE es O(n3), se han realizado experimentos para n ={1000, 1259, 1582, 1817,
2000, 2154, 2410, 1519}, correspondientemente con Prc ={1, 2, 4, 6, 8, 10, 14,
16}. Graficamente se oberva el Speedup escalado obtenido en la Figura 5.3. En
general, los algoritmos presentan baja escalabilidad.
0 2 4 6 8 10 12 14 161
2
3
4
5
6
7
Procesadores
Spe
edup
Esc
alad
o
MIE
0 2 4 6 8 10 12 14 161
1.5
2
2.5
3
3.5
4
4.5
5
5.5
Procesadores
Spe
edup
Esc
alad
o
EPE
Figura 5.3: Speedup Escalado de los algoritmos paralelos del PIEVS
5.5. Conclusiones
Se ha disenado e implementado un algoritmo eficiente para el calculo de la
descomposicion en valores singulares (svd) de una matriz tipo Hankel, basado
en la multiplicacion rapida de Fourier de una matriz Hankel por un vector. Este
algoritmo reduce considerablemente los costos computacionales de las rutinas
LAPACK y ScaLAPACK que calculan la svd de una matriz general, lo que
representa un aporte de este trabajo.
Con base en el algoritmo eficiente construido para la svd y en las caracterısti-
cas estructurales de las matrices que intervienen en el PIEVS se han construido
MIE y EPE, dos algoritmos que resuelven el PIEVS eficientemente, siendo este
uno de los objetivos de este capıtulo que se han alcanzado satisfactoriamente.
Se ha constatado que los algoritmos MI y EPE del PIAVS mejoran sustancial-
mente sus costos computacionales cuando se disenan e implementan tomando
ventaja de la estructura de las matrices tipo Toeplitz del PIEVS, como se ha
mostrado en la complejidad de tiempo y experimentos numericos de MIE y EPE,
constrastados con los obtenidos con MI y EP.
EL MIE y PIE tambien se han paralelizado. Los costos computacionales de
137
estos algoritmos paralelos se han reducido respecto de los correspondientes MI y
EP para el PIAVS. Con MIE y EPE paralelos se ha podido disminuir el tiempo
de ejecucion secuencial para resolver el PIEVS.
Las prestaciones de los algoritmos paralelos MIE y EPE se han visto afec-
tadas escencialmente por dos causas: por una parte, el algoritmo secuencial
tomado como referencia para medir las prestaciones es altamente eficiente, por
lo que sus tiempos de ejecucion son difıciles de mejorar sustancialmente cuando
se utiliza mas de un procesador; por otra parte, aunque hay rutinas altamente
paralelizables, como es el caso del calculo de J , b y btr, las prestaciones se ven
mermadas por las secciones de codigo que deben ejecutarse secuencialmente, ya
porque los tiempos secuenciales son altamente eficientes, ya por evitar comuni-
caciones entre procesadores. Sin embargo, al menos con 2 y 4 procesadores MIE
y EPE presentan prestaciones aceptables para problemas de tamanos grandes.
138
Capıtulo 6
Algoritmos para la
Resolucion del PIVSVP
En este capıtulo se aborda el Problema Inverso de Valores Singulares y
Valores Propios (PIVSVP) que consiste en construir una matriz A ∈ <n×n
cuyos valores singulares sean S∗ = {S∗1 , S∗
2 , ..., S∗n} y cuyos valores propios sean
L∗ = {L∗1, L
∗2, ..., L
∗n}, con S∗
1 ≥ S∗2 ≥ ... ≥ S∗
n y L∗1 ≥ L∗
2 ≥ ... ≥ L∗n, dos
conjuntos de valores reales dados bajo ciertas restricciones, como se definiran
en las secciones de este capıtulo.
En la Seccion 6.1 se resuelve lo que se puede considerar un caso particular
del PIVSVP, al asumir que L∗1 = L∗
2 = ... = L∗n = 1, y que los elementos de S∗
satisfacen las condiciones de Weyl; para esto se aplica un algoritmo dado por
Kosowsky y Smoktunowicz en [KA00], que en este capıtulo se denominara MTri-
IU, que construye una matriz triangular inferior unidad. Se presentan dos im-
plementaciones paralelas de este algoritmo, una bajo el modelo de memoria
distribuida y otro bajo el modelo de memoria compartida, siendo esta ultima la
mas adecuada para el tipo de algoritmo que se maneja. Los experimentos se han
realizado con los casos de prueba del tipo TriIU. La implementacion del algorit-
mo bajo el modelo de memoria distribuida se ha realizado en el cluster Kefren
y la implementacion bajo el modelo de memoria compartida se ha realizado en
el cluster Aldebaran, que es el mas adecuado para este tipo de algoritmos.
En la Seccion 6.2 se presenta un metodo, aporte de este trabajo de tesis, que
resuelve una generalizacion del PIVSVP, al considerar que los valores singulares
dados S∗ y los valores propios dados L∗ satisfacen las condiciones Weyl-Horn,
que establecen un vınculo entre los valores singulares y los valores propios de una
matriz. El metodo, al que se denomina MBidiag, construye una matriz bidiago-
nal a traves de la resolucion de un PIVP. Se presentan resultados experimentales
de MBidiag y se realiza una comparacion con respecto a resultados experimen-
tales arrojados por un metodo dado por Chu en [Chu00] y por otro dado por Li
139
y Mathias en [LM01], que tambien se ocupan de la construccion de una matriz
(Chu de una cuasitriangula superior, y Li y Mathias de una triangular inferior)
con valores singulares y valores propios prestablecidos y que cumplen las condi-
ciones de Weyl-Horn. Para los experimentos se han tomado casos de prueba del
tipo Bidiag sobre el cluster Kubrick.
6.1. Metodo MTriIU
El problema de construir una matriz triangular inferior unidad A ∈ Rn×n,
tal que los valores singulares de A sean S∗1 ≥ S∗
2 ≥ ... ≥ S∗n, fue propuesto por
Kosowski y Smoktunowicz en [KA00]. Este problema puede verse como un caso
particular del PIVPVS:
Encontrar una matriz triangular inferior unidad A ∈ Rn×n, tal que
los valores singulares de A sean S∗1 ≥ S∗
2 ≥ ... ≥ S∗n, y los valores
propios de A sean L∗i = 1, para i = 1, n.
La resolucion de este problema esta garantizada por Horn [Hor54] que ha
demostrado que dicha matriz A existe si y solo si se satisfacen las condiciones
de Weyl:
S∗1S∗
2S∗3 ...S∗
i ≥ 1, (i = 2, n) (6.1)
S∗1S∗
2S∗3 ...S∗
n = 1. (6.2)
Para resolver este problema Kosowski y Smoktunowicz se basan en la idea de
construir una secuencia de matrices triangulares inferiores unidad A(i) (i = 1, n)
equivalentes a la matriz diagonal diag(S∗1 , S∗
2 , ..., S∗n). Se sabe que dos matrices
M y N son unitariamente equivalentes si existen matrices unidad U , V tales que
M = UNV t; bajo estas condiciones M y N tienen los mismos valores singulares.
La primera matriz de la sucesion A(1) = diag(S∗1 , S∗
2 , ..., S∗n) posee los valores
singulares deseados, pero no los valores propios deseados Li = 1 (i = 1, n); para
esto se construye una matriz unitariamente equivalente a A(1) haciendo uso del
siguiente Lema:
Lema 1 Dos numeros reales S∗i , S∗
j > 0 tales que S∗i ≥ 1 ≥ S∗
j o S∗j ≥ 1 ≥ S∗
i ,
son los valores singulares de la matriz[
1 0√
(S∗2i − 1)(1− S∗2
j ) S∗i S∗
j
]
.
Este lema lleva a tomar submatrices 2 × 2 de A(i) (i = 1, n) de la forma
diag(di, dj) tales que di, dj cumplan
di ≥ 1 ≥ dj o bien dj ≥ 1 ≥ di. (6.3)
140
Para garantizar que 6.3 se cumpla, Kosowski et.al. hacen uso del siguiente
lema:
Lema 2 Si los numeros reales S∗1 ≥ S∗
2 ≥ ... ≥ S∗n > 0 satisfacen las condi-
ciones de Weyl, existe una permutacion {d1, d2, ..., dn} de {S∗1 , S∗
2 , ..., S∗n} tal
que
d1d2...di−1 ≥ 1 ≥ di o di ≥ 1 ≥ d1d2...di−1 (i = 2, n). (6.4)
Partiendo entonces, no de la matriz diag(S∗1 , S∗
2 , ..., S∗n) sino de la matriz
A(1) = diag(d1, d2, ..., dn) y como d1 y d2 cumplen (6.3), entonces la siguiente
matriz existe:
L(2)2×2 =
[
1 0√
(d21 − 1)(1− d2
2) d1d2
]
con valores singulares d1, d2. Entonces, se puede construir A(2) como
A(2) =
1 0√
(d21 − 1)(1− d2
2) d1d2
diag(d3, d4, ..., dn)
=
[
L(2)2×2
D(1)n−2×n−2
]
.
A(2) es equivalente a A(1) porque existen matrices unitarias U(2)2×2 y V
(2)2×2
tales que
L(2)2×2 = U
(2)2×2 diag(d1, d2) V
(2)t2×2 .
Una vez que A(2) ha sido construida, empieza un proceso iterativo para
construir A(3), A(4), ..., A(n). Por ejemplo, la construccion de A(3) se basa en la
descomposicion en valores singulares (SVD) de la matriz L(3)2×2:
L(3)2×2 =
[
1 0√
(d21d
22 − 1)(1− d2
3) d1d2d3
]
= U(3)2×2 diag(d1d2, d3) V 2× 2(3)t;
(6.5)
entonces A(3) se puede expresar como A(3) = Q(3)A(2)Z(3)t, donde
Q(3) =
1 0 0 0 ... 0
0 u(3)11 u
(3)12 0 ... 0
0 u(3)21 u
(3)22 0 ... 0
0 0 0 1 ... 0
.
.....
.
.....
. . ....
0 0 0 0 ... 1
=
I1×1
U(3)2×2
In−3×n−3
,
141
A(2) =
1 0 0 0 ... 0q
(d2i − 1)(1 − d2
j ) d1d2 0 0 ... 0
0 0 d3 0 ... 0
0 0 0 d4 ... 0
......
......
. . ....
0 0 0 0 ... dn
=
=
B(2)1×1
C(2)2×1 diag(d1d2, d3)
D(2)n−3×n−3
,
Z(3)t =
1 0 0 0 ... 0
0 v(3)11 v
(3)21 0 ... 0
0 v(3)12 v
(3)22 0 ... 0
0 0 0 1 ... 0
.
.....
.
.....
. . ....
0 0 0 0 ... 1
=
I1×1
V(3)t2×2
In−3×n−3
;
entonces A(3) se expresa como
A(3) =
2
6
6
4
B(2)1×1
U(3)2×2C
(2)2×1 U
(3)2×2diag(d1d2, d3)
D(2)n−3×n−3
3
7
7
5
2
6
4
I1×1
V(3)t2×2
In−3×n−3
3
7
5=
=
2
6
6
4
B(2)1×1
U(3)2×2C22×1 U
(3)2×2diag(d1d2, d3)V
(3)t2×2
D(2)n−3×n−3
3
7
7
5
=
=
2
6
6
4
B(2)1×1
U(3)2×2C
(2)2×1 L
(3)2×2
D(2)n−3×n−3
3
7
7
5
El mismo procedimiento se sigue para calcular A(4), A(5), ..., A(n). El resul-
tado final sera la matriz triangular inferior unidad A(n), cuyos valores singulares
son S∗ y cuyos valores propios son L∗i = 1 (i = 1, n).
Si se definen los numeros pi y zi como:
pi = d1d2...di, (i = 1, n); (6.6)
zi =√
(p2i−1 − 1)(1− d2
i ), (i = 2, n); (6.7)
A(n) tiene la forma:
A(n) =
[B
(n−1)n−2×n−2
U(n)2×2C
(n−1)2×n−2 L
(n)2×2
]
donde B(n−1)n−2×n−2, U
(n)2×2C
(n−1)2×n−2 y L
(n)2×2 son:
B(n−1)n−2×n−2 =
1 0 ... 0
u(3)11 z2 1 ... 0
u(4)11 u
(3)21 z2 u
(4)11 z3 ... 0
......
. . ....
u(n−1)11 u
(n−2)21 ...u
(3)21 z2 u
(n−1)11 u
(n−2)21 ...u(4)z3 ... 1
, (6.8)
142
U(n)2×2C
(n−1)2×n−2 =
u(n)11 u
(n−1)21 ...u
(3)21 z2 u
(n)11 u
(n−1)21 ...u
(4)21 z3 ... u
(n)11 zn−1
u(n)21 u
(n−1)21 ...u
(3)21 z2 u
(n)21 u
(n−1)21 ...u
(4)21 z3 ... u
(n)21 zn−1
,
(6.9)
L(n)2×2 =
1 0
zn pn
=1 0
zn 1. (6.10)
Para automatizar este proceso, denominado en este trabajo como metodo
MTriIU, en la siguiente seccion se discute el Algoritmo secuencial correspondi-
ente y se proporcionan pruebas numericas.
6.1.1. Algoritmo Secuencial del Metodo MTriIU
Antes de entrar de lleno a la construccion de las matrices A(i) (i = 1, n), hay
que garantizar que los valores singulares deseados S∗, que cumplen las condi-
ciones de Weyl (6.1) y (6.2), tambien cumplan la condicion (6.3). Basandose en
el Lema 2, es posible encontrar una permutacion de S∗ con la que se cumpla esa
condicion (6.3). El algoritmo correspondiente a este proceso es el Algoritmo 50.
Algoritmo 50 Construyed
1. S ← ordenaMenorMayor(S∗)
2. /* Localiza el ındice k del mayor valor de S menor que 1 */
Para i = 1, n
Si (Si < 1)
k ← i
3. /* Construye vector d que cumpla Lema 2 */
d1 ← Sk; d2 ← Sk+1
aa← Sk; bb← Sk+1
izq ← k − 1; der ← k + 2
k ← 3
Mientras (k ≤ n)
tempo← aa ∗ bb
Si (tempo < 1)
dk ← Sder
der ← der + 1
Sino
dk ← Sizq
izq ← izq − 1
aa← tempo
bb← dk
k ← k + 1
Ahora, de las ecuaciones (6.8), (6.9) y (6.10) es claro que A(n) puede constru-
irse con los componentes de la primera columna de las matrices U (i) (i = 3, n) y
143
con los valores de los vectores pi (i = 1, n) (ecuacion 6.6), zi (i = 2, n) (ecuacion
6.7) y di (i = 1, n) (algoritmo 50), donde U (i) es la matriz de vectores singulares
izquierdos de
L(i) =
[
1 0
zi pi
]
, (6.11)
por lo que A(n) puede construise directamente, sin necesidad de construir ex-
plıcitamente A(2), A(3),...,A(n−1). Entonces, una vez calculadas di (i = 1, n), el
siguiente paso para construir A(n) es calcular zi (i = 2, n) y U (i) (i = 3, n) con
el Algoritmo 51.
Algoritmo 51 CalculazU
1. p1 ← d1
2. Para i = 2, n
2.1. pi ← pi−1di
3. z1 ← sqrt((p1 − 1)(1− d2)(p1 + 1)(1 + d2))
4. Para i = 3, n
4.1. zi−1 ← sqrt((pi−1 − 1)(1− di)(pi−1 + 1)(1 + di))
4.2. L←[
1 0
zi−1 pi
]
4.3. [Q, S, V ]← dgesvd(2, L)
4.4. Si (pi−1 < di)
dswap(Q:,1, Q:,2)
4.5. U:,i−2 ← Q:,1
El resultado del Algoritmo 51 es el vector z y la matriz U siguientes:
1 2 ... n− 1
z = z2 z3 ... zn
U =
1 2 ... n− 2
u(3)11 u
(4)11 ... u
(n)11 1
u(3)21 u
(4)21 ... u
(n)21 2
;
con estos datos en el Algoritmo 52 se construye A ≡ A(n), que es la matriz
triangular inferior unidad con valores singulares S∗.
Algoritmo 52 CalculaMatTriU
1. A← In
2. Para i = 2, n− 1 /* Ai:i+1,1:i−1 ← U:,i−1Ai,1:i−1 */
Ai:i+1,1:i−1 ← dgemm(2, i− 1, 1, U:,i−1, Ai,1:i−1)
3. Para i = 1, n− 1 /* Ai+1:n,i ← ziAi+1:n,i */
Ai+1:n,i ← dscal(n− i, zi, Ai+1,i)
144
Por lo tanto, el proceso completo para calcular A esta en el Algoritmo 53.
Algoritmo 53 MTriIU
1. d← Construyed(S∗)
2. [z, U ]← CalculazU(d)
3. A←CalculaMatTriU(z, U)
Este Algoritmo tiene una complejidad de tiempo de:
T (n) =
(
n2 +328n
3
)
tf
Algunos resultados de experimentos numericos del Algoritmo MTriIU estan
en la Tabla 6.1, donde S denota los valores singulares de la matriz A calculada.
En todos los casos se observan buenos resultados.
Tabla 6.1: Resultados del caso Triu con MTriIUn 4 5 8 30 50 100 150 300 500
‖S∗ − S‖2 4e-16 4e-16 5e-16 1e-15 1e-15 2e-14 4e-14 8e-15 1e-14
En la siguiente seccion se analiza la forma en que puede paralelizarse este
algoritmo, aprovechando que no es necesario el calculo de matrices triangulares
inferiores unidad previas a A(n).
6.1.2. Paralelizacion del Algoritmo MTriIU
Recordar que para calcular A ≡ A(n) se requiere de U (i) (i = 3, n) que de-
pende de la SVD de L(i), y que L(i) (ver (6.11)) depende de pi y zi (definidas
en (6.6) y (6.7), respectivamente). Cada elemento de p puede calcularse inde-
pendientemente de los otros; como zi depende de pi−1 y di, zi tambien puede
calcularse en paralelo con zj (j = 2, n; j 6= i). Entonces, la SVD de las matrices
L(i) pueden calcularse en paralelo y los componentes de U (i) tambien.
Por otra parte, en la seccion anterior se vio que A puede construirse sin
calcular explıcitamente la sucesion A(i) (i = 1, n−1). Para eliminar operaciones
en punto flotante innecesarias, se pueden ordenar los productos involucrados en
cada renglon de A como en el siguiente esquema (para el caso n = 6 y el renglon
5):
con U(6): ⇒ A6,1:6 = u(6)11 1
con U(5): A6,4u(5)21 ⇒ A6,1:6 = u
(6)11 u
(5)21 u
(6)11 1
con U(4): A6,3u(4)21 ⇒ A6,1:6 = u
(6)11 u
(5)21 u
(4)21 u
(6)11 u
(5)21 u
(6)11 1
con U(3): A6,2u(3)21 ⇒ A6,1:6 = u
(6)11 u
(5)21 u
(4)21 u
(3)21 u
(6)11 u
(5)21 u
(4)21 u
(6)11 u
(5)21 u
(6)11 1
145
Las expresiones generales de este procedimiento son:
Ai,i−2 = u(i−2)21 ; Ai,j = Ai,j+1u
(j)21 ; (i = n; j = i− 3, i− 2, ..., 1); (6.12)
Ai,i−1 = u(i−1)11 ; Ai,j = Ai,j+1u
(j)21 ; (i = 2, n−1; j = i−2, i−3, ..., 1). (6.13)
Para finalizar la construccion de A, las columnas de su triangular inferior
(excepto la diagonal) se multiplican con los valores de z, esta operacion se puede
expresar como:
Aij = zjAij ; (i = 2, n; j = 1, i− 1). (6.14)
Entonces, los renglones de A se pueden calcular simultaneamente si los valores
de la matriz U y el vector z se han calculado ya.
Por lo tanto, hay tres secciones del algoritmo MTriIU (Algoritmo 53) que
pueden paralelizarse: el calculo de las columnas de la matriz U , de los compo-
nentes del vector z y de los renglones de A. La paralelizacion, entonces, consiste
en la distribucion de los n− 1 componentes de z, los n− 2 componentes de U y
los n−1 renglones de A (A2,1:1, A3,1:2, A4,1:3, ..., An,n−1) entre Prc procesadores.
Para controlar la distribucion de carga entre los procesadores, se utilizan dos
estructuras de ındices: low y up, las que indican los lımintes del subintervalo
de componentes de U y z que cada procesador debe calcular. Por ejemplo, si
n = 19 y Prc = 4, la distribucion del calculo de z y U queda como:
Proc low up Calcula
0 3 7 U (3), U(4), U(5), U(6), U(7) y z3, z4, z5, z6, z7
1 8 11 U (8), U(9), U(10), U(11) y z8, z9, z10, z11
2 12 15 U (12), U(13), U(14), U(15) y z12, z13, z14, z15
3 16 19 U (16), U(17), U(18), U(19) y z16, z17, z18, z19, z2
La distribucion del trabajo necesario para calcular A se controla mediante las
estructuras de ındices ren y contaRen; contaRen indica cuantos y ren que ren-
glones de A debe calcular cada procesador, distribuyendo los renglones por pare-
jas entre los procesadores para equilibrar la carga computacional. Por ejemplo,
si n = 20 y Prc = 7, se forman las siguientes parejas de renglones:
parejas (2,20) (3,19) (4,18) (5,17) (6,16) (7,15) (8,14) (9,13) (10,12) (11)
flops 36 38 38 38 38 38 38 38 38 19
donde las parejas se eligen tomando renglones extremos de modo que la cantidad
de flops a calcular sea aproximadamente igual para cada procesador. Formadas
las parejas, en este ejemplo a cada procesador le corresponde una pareja; el
resto de las parejas ((9,13), (10,12) y (11)) se distribuyen entre los procesadores,
quedando ren y contaRen con los siguientes valores:
146
Proc ren contaRen
0 2 20 9 3
1 3 19 13 3
2 4 18 10 3
3 5 17 12 3
4 6 16 11 3
5 7 15 2
6 8 14 2
Para implementar esta idea en una computadora paralela de Memoria Dis-
tribuida, las estructuras: ren, contaRen, U y z deben estar disponibles en todos
los procesadores, por lo que en el proceso paralelo para calcular A hay dos etapas
de comunicacion, como se ilustra a continuacion para el caso n = 19, Prc = 4:
Proc0 Proc1 Proc2 Proc3
Construye d1:n d1:n d1:n d1:n
Calcula z3:7 z8:11 z12:15 z16:19,2
Calcula U (3)...U(7) U(8)...U(11) U(12)...U(15) U(16)...U(19)
⇐ −−−−−−−−−−−−−−−−−−−−−−−−−− ⇒
Dispersion Todos a Todos para replicar U y z
⇐ −−−−−−−−−−−−−−−−−−−−−−−−−− ⇒
A2,1, A19,1:18 A3,1:2, A18,1:17 A4,1:3, A17,1:16 A5,1:4, A16,1:15
Calcula A16,1:15, A15,1:14 A7,1:6, A14,1:13 A8,1:7, A13,1:12 A9,1:8, A12,1:11
A11,1:10 A10,1:9
⇐ −−−−−−−−−−−−−−−−−−−−−−−−−−−
Reduccion Todos a Uno para construir A en Proc0
⇐ −−−−−−−−−−−−−−−−−−−−−−−−−−−
Los algoritmos del calculo paralelo de z, U y A se describen en los Algoritmos
54, 55 y 56.
Algoritmo 54 ParaleloCalculazU
1. p1 ← d1
2. Para i = 2, n
2.1. pi ← pi−1di
3. Si procesador Prc
z1 ← sqrt((p1 − 1)(1− d2)(p1 + 1)(1 + d2))
4. Para i = low, up
4.1. zi−1 ← sqrt((pi−1 − 1)(1− di)(pi−1 + 1)(1 + di))
4.2. L←[
1 0
zi−1 pi
]
4.3. [Q, diag(S), V ]← dgesvd(2, L)
4.4. Si (pi−1 < di)
dswap(Q:,1, Q:,2)
4.5. U:,i ← Q:,1
147
Algoritmo 55 ParaleloCalculaMatTriU
1. A← In
2. Para k = 1, contaRenproc
2.1. i← renproc,k
2.2. Si (i = n)
Ai,i−2 ← U2,i−2
Para j = i− 3, i− 4, i− 5, ..., 1
Ai,j ← Ai,j+1U2,j
Ai,j+1 ← Ai,j+1zj+1
Sino
Ai,i−1 ← U1,i−1
Para j = i− 2, i− 3, i− 4, ..., 1
Ai,j ← Ai,j+1U2,j
Ai,j+1 ← Ai,j+1zj+1
2.3. Ai,1 ← Ai,1z1
148
Algoritmo 56 MTriIUParalelo
1. d← Construyed(S∗) /* operacion replicada */
2. [z, U ]← ParaleloCalculazU(d)
3. /* Dispersion Todos a Todos de un mensaje de longitud n−2Prc
+ 1 para
replicar ll y de un mensaje de longitud 2× n−2Prc
para replicar U */
Para i = 0, Prc − 1
Si procesador i /*enviar*/
dgebs2d(′All′, 2, n−2Prc
+ 1, U)
dgebs2d(′All′, n−2Prc
, 1, ll)
Sino /*recibir*/
U ← dgebr2d(′All′, 2, n−2Prc
+ 1, U)
ll← dgebr2d(′All′, n−2Prc
, 1, ll)
4. A← ParaleloCalculaMatTriU(ll, U)
5. /* Reduccion TODOS a UNO de un mensaje de longitud
contaRen×max(renproc,:) para construir A en el procesador P0 */
Si procesador NO 0
Para i = 1, contarenproc
Nbytes← max(Nbytes, renproc,i − 1)
paquete←MPI Pack(Aren(proc,i),1:ren(proc,i)−1, renproc,i − 1)
MPI Send(paquete, Nbytes, MPI PACKED)
Sino
Para p = 1, Prc − 1
paquete←MPI Recv(paquete, Nbytes)
Para i = 1, contarenp
Aren(p,i),1:ren(p,i)−1 ←MPI Unpack(paquete, renp,i − 1)
6.1.3. Analisis de Prestaciones e Implementaciones del Al-
goritmo Paralelo MTriIU
Analizando teoricamente las prestaciones del Algoritmo paralelo MTriIU, el
Speedup se ve afectado por la construccion de A en el procesador Proc0, pues
comunica una cantidad de datos del orden O(
n2√
Prc
)
, como se ve en su tiempo
de ejecucion teorico:
TMTriIU (n, Prc) =
(n2
Prc+
322n
3Prc+ 2n− 656
3Prc
)
tf + 5√
Prctm +n2 + 4n√
Prc
tv,
por lo que su Speedup no alcanza el optimo asintoticamente, de acuerdo a la
siguiente expresion:
limn→∞
SMTriIU (n, Prc) = limn→∞
T (n, 1)
T (n, Prc)
(Prc
n2tf
)(Prc
n2tf
)−1
=Prc
1 +√
Prctv
tf
.
149
Algunas muestras experimentales tomadas en el cluster Kefren ilustran este
comportamiento en la Tabla 6.2, donde es evidente que los tiempos de ejecucion
no disminuyen al aumentar el numero de procesadores.
Tabla 6.2: Tiempos de Ejecucion Experimentales de MTriIU en Kefren, construyendo A en
Proc0P Segundos
1 1.3 4.2 8.5 14 47 78 226 344
2 2.4 8.9 19 37 210 316 600 964
4 2.9 10.1 23 43 141 209 422 678
6 3.0 11.1 25 45 124 179 361 580
8 3.3 12.2 27 49 113 167 332 533
10 3.5 12.4 28 51 110 163 314 504
12 3.5 12.9 29 52 106 154 299 493
14 3.8 13.1 30 53 105 152 290 479
16 4.0 13.6 31 55 104 152 288 466
n 500 1000 1500 2000 2500 3000 4000 5000
El costo teorico del mismo algoritmo sin la construccion final de A en el
procesador Proc0 es:
TMTriIU (n, Prc) =
(n2
Prc+
322n
3Prc+ 2n− 656
3Prc
)
tf + 4√
Prctm +6n√Prc
tv ,
que muestra que el grado de paralelismo logrado en el calculo de U , z y A es
teoricamente bueno, ya que el Speedup alcanza el optimo asintoticamente:
limn→∞
SMTriIU (n, Prc) = limn→∞
T (n, 1)
T (n, Prc)
(Prc
n2tf
)(Prc
n2tf
)−1
= Prc.
Los tiempos de ejecucion experimentales con el algoritmo paralelo MTriIU que
no construye A pueden verse en la Tabla 6.3. En estos experimentos se reducen
los tiempos de ejecucion cuando se utiliza mas de un procesador, excepto en
algunos casos donde es necesario utilizar muchos procesadores para reducir el
tiempo secuencial (n = {2500, 3000}), pero este fenomeno tiende a desaparecer
cuando el tamano del problema se incrementa. Los Speedup de estos experi-
mentos estan en la Figura 6.1. Ademas se espera que multiplicando el numero
de procesadores por algun entero k, el Speedup obtenido sea k, como en los
resultados de la Tabla 6.4 (tomando datos de la Tabla 6.3) que muestran apro-
ximadamente este comportamiento cuando n crece.
150
Tabla 6.3: Tiempos de Ejecucion Experimentales de MTriIU en Kefren, SIN construır A en
Proc0P Segundos
1 1.3 4.2 8.5 14 47 78 226 344
2 0.91 3.2 6.8 11 164 235 420 646
4 0.76 2.5 5.6 9.6 86 125 222 337
6 0.80 2.4 5.2 9.0 61 88 157 234
8 0.75 2.4 5.1 8.7 48 69 123 184
10 0.67 2.3 4.9 8.5 40 58 103 153
12 0.74 2.3 4.8 8.3 36 51 91 131
14 0.67 2.3 4.7 8.4 32 46 81 117
16 0.65 2.3 4.7 7.7 29 42 74 105
n 500 1000 1500 2000 2500 3000 4000 5000
Tabla 6.4: Speedup experimental de MTriIU en Kefren, sin construir A en Proc0, multiplicando
el numero de procesadores por 2 y por 4
k P Speedup
2 2 1.19 1.27 1.20 1.19 1.89 1.88 1.89 1.91
4 1.01 1.07 1.1 1.1 1.79 1.81 1.8 1.83
8 1.15 1.04 1.08 1.13 1.66 1.64 1.66 1.75
4 2 1.21 1.37 1.32 1.30 3.38 3.40 3.41 3.51
4 1.16 1.12 1.19 1.24 2.98 2.97 3 3.2
n 500 1000 1500 2000 2500 3000 4000 5000
500 1000 1500 2000 2500 3000 3500 4000 4500 5000
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
Tamaño del Problema (n)
Spe
edup
de
WE
, Mem
oria
Dis
trib
uida
P=2P=4P=6P=8
500 1000 1500 2000 2500 3000 3500 4000 4500 50001.2
1.4
1.6
1.8
2
2.2
2.4
2.6
2.8
3
3.2
Tamaño del Problema (n)
Spe
edup
de
WE
, Mem
oria
Dis
trib
uida
P=10P=12P=14P=16
Figura 6.1: Speedup experimental de MTriIU en Kefren, SIN construir A en Proc0
El analisis anterior muestra que, dejando de lado las comunicaciones nece-
sarias para contener la matriz A en un solo procesador, la resolucion del PIVSVP
ha sido razonablemente paralelizada. El escollo de las comunicaciones es tratado
en la siguiente subseccion.
151
Implementacion en el Modelo de Memoria Compartida
El analisis de costos de la implementacion bajo el modelo de Memoria Distri-
buida del algoritmo paralelo MTriIU muestra que las comunicaciones necesarias
para construir la matriz triangular inferior unidad A en un solo procesador,
danan seriamente las prestaciones de la implementacion.
En una implementacion bajo el modelo de Memoria Compartida, no es nece-
sario realizar este ultimo paso, con lo que, de manera natural, se mejoran las
prestaciones de este algoritmo. Esta implementacion se ha realizado emplean-
do directivas de compilador de OpenMP [CDK+01], tales como omp parallel
do para paralelizar ciclos, omp parallel para paralelizar una seccion de codigo,
omp barrier para sincronizar hilos de ejecucion y omp do para definir trabajo
compartido en un ciclo.
Utilizando H hilos de procesamiento y asumiento que cada hilo se ejecuta en
un procesador (Prc = H), cada hilo se puede encarga de calcular un subconjunto
de componentes de z, U y A, pues ya se ha visto en la seccion anterior que no
hay problemas de dependencias de datos.
La distribucion de z, U y A podrıa efectuarse por el programador, como en
el caso de la implementacion en Memoria Distribuida (mediante los ındices low,
up, Ren y ContaRen). Sin embargo, en este caso es mas eficiente dejar este
trabajo al compilador utilizando las directivas adecuadas, como: omp parallel
do y omp do, que dividen el trabajo entre hilos de procesamiento de manera
automatica. En el siguiente diagrama se muestra esquematicamente como se
proceden los calculos:
Hilos hilo0 hilo1 hilo2 hilo3
Construir d1:n −−−−− −−−−− −−−−−
Calcular z3:7 z8:11 z12:15 z16:19,2
Calcular U (3)...U(7) U(8)...U(11) U(12)...U(15) U(16)...U(19)
⇐ −−− Barrera de Sincronizacion −−− ⇒
A2,1, A3,1:2 A6,1:5, A7,1:8 A10,1:9, A11,1:10 A14,1:13, A15,1:14
Calcular A4,1:3, A5,1:4 A8,1:7, A9,1:8 A12,1:11 , A13,1:12 A16,1:15, A17,1:16
A18,1:17 A19,1:18
Comparando este diagrama con el de Memoria Distribuida, es claro que
las etapas de comunicaciones desaparecen, ası que se espera que la eficiencia del
algoritmo paralelo MTriIU se incremente. Este proceso esta escrito en detalle en
el algoritmo 57, donde se utiliza omp parallel para crear hilos de procesamiento
(hilo1, hilo2, ..., hiloH−1) y ejecutar en paralelo un segmento de codigo; y en
los algoritmos 58 y 59, donde se utiliza la directiva omp do para distribuir las
iteraciones (del ciclo ”Para”) entre los hilos de procesamiento creados con omp
parallel.
152
Algoritmo 57 ParaleloShMTriIU
d← Construyed(S∗) /* ejecutado por hilo0 (hilo maestro) */
!$omp parallel private(hilo) /* hilo0 crea hilos esclavos hilo1, ..., hiloH−1 */
[z, U ]← ParaleloShzU(d)
!$omp barrier
A← ParaleloShA(z, U)
!$omp end parallel /* esclavos finalizados por hilo hilo0 */
Algoritmo 58 ParaleloShzU
!$omp do /* Se distribuyen las iteraciones entre los hilos */
Para i = 3, n
zi−1 ← calcular z(p, d) /* de acuerdo con (6.7) */
L← calcular L(zi−1, pi) /* de acuerdo con (6.11) */
[Q, diag(S), V ]← dgesvd(2,L)
U1:2,i−2 ← Q:,1
!$omp enddo
Si hilo = hiloH−1 z1 ← calcular z(p, d)
Algoritmo 59 Algorithm ParaleloShA
!$omp do /* Se distribuyen las iteraciones entre los hilos */
Para i = 2, n
Ai,1:i−1 ← calcula A(z, U) /* de acuerdo a (6.12-6.14) */
!$omp enddo
Pruebas experimentales del Algoritmo 57 se han realizado en el cluster Alde-
baran, que por ser un multiprocesador de memoria logicamente compartida,
aunque fısicamente distribuida (memoria compartida distribuida), es el adecua-
do para ejecutar este tipo de implementaciones. En la Tabla 6.5 se tienen algunos
tiempos de ejecucion obtenidos.
153
Tabla 6.5: Tiempos de Ejecucion Experimentales de MTriIU en Aldebaran, bajo el modelo de
Memoria Compartida
Hilos Segundos
1 1.3 4.9 10.1 22 26 37 68 95
2 1.0 3.1 6.1 12 14 20 35 48
3 0.64 2.1 4.3 9.0 10 14 23 31
4 0.55 1.6 3.4 7.4 7.1 10 18 23
6 0.45 1.1 2.7 5.0 3.2 9 16 18
8 0.44 1.1 2.6 4.3 5.5 8 13 17
10 0.33 1.2 2.3 3.7 4.8 7 10.3 16
12 0.35 1.0 2.6 3.7 4.6 6.1 10.2 13
14 0.32 0.9 2.2 3.3 4.2 6.0 9.8 11
16 0.25 0.8 2.1 3.2 4.1 5.4 9.6 10
n 500 1000 1500 2000 2500 3000 4000 5000
Los Speedup correspondientes a los tiempos anteriores estan en la Figura 6.2.
Con 2 hilos de procesamiento el Speedup ya es aceptable para n = 1000 y a partir
de n = 2000 es bueno para 2 procesadores mientras que para 3 y 4 empieza a
ser aceptable. Buenos Speedup para 3 y 4 procesadores se obtienen a partir de
n = 3000. En el caso de 6 procesadores, el Speedup es aceptable en el tamano
de problema mas grande que se ha probado (n = 5000).
2 4 6 8 10 12 14 161
2
3
4
5
6
7
Numero de Hilos (H)
Spee
dup
de W
E, M
emor
ia C
ompa
rtid
a
n=500n=1000n=1500n=2000
2 4 6 8 10 12 14 161
2
3
4
5
6
7
8
9
10
Numero de Hilos (H)
Spe
edup
de
WE
, Mem
oria
Com
part
ida
n=2500n=3000n=4000n=5000
Figura 6.2: Speedup experimentales de MTriIU en Aldebaran. Modelo de Memoria Compartida
La eficiencia correspondiente a estos experimentos (Tabla 6.6) son buenos
con tamanos de problema relativamente pequenos. Con n = 1000 y dos hilos la
eficiencia es de 81%; para n = 2000 la eficiencia es muy buena hasta con 4 hilos
y aceptable con 6. Para el caso experimental mas grande que se ha probado
(n = 5000) la eficiencia con 6 procesadores tambien es buena.
154
Tabla 6.6: Eficiencia Experimental de MTriIU en Aldebaran. Modelo de Memoria Compartida
Hilos Aprovechamiento
2 66 % 81 % 83 % 91 % 92 % 92 % 97 % 98 %
3 70 % 78 % 78 % 81 % 87 % 88 % 98 % 98 %
4 61 % 76 % 74 % 92 % 91 % 92 % 94 % 95 %
6 50 % 74 % 62 % 73 % 69 % 68 % 71 % 88 %
8 38 % 56 % 49 % 64 % 59 % 58 % 65 % 69 %
10 41 % 41 % 44 % 59 % 54 % 53 % 66 % 59 %
12 32 % 41 % 34 % 49 % 47 % 50 % 55 % 61 %
14 30 % 36 % 36 % 47 % 44 % 44 % 49 % 63 %
16 34 % 35 % 30 % 43 % 39 % 43 % 44 % 59 %
n 500 1000 1500 2000 2500 3000 4000 5000
Para analizar la escalabilidad de este algoritmo se ha hecho crecer en la
misma proporcion el tamano del problema y el numero de hilos (el numero de
procesadores); como el algoritmo MTriIU es O(n2), se han tomando tiempos
de ejecucion para n = {1000, 1400, 2000, 2800, 3400, 4000} con un hilo de proce-
samiento y respectivamente con H = {1, 2, 4, 8, 12, 16} hilos (procesadores). Los
resultados estan en la Figura 6.3 y muestran una buena escalalibidad.
0 2 4 6 8 10 12 14 160
1
2
3
4
5
6
7
8
Numero de Hilos (H)
Spe
edup
Esc
alad
o de
WE
, M
emor
ia C
ompa
rtid
a
n=1000
n=1400
n=2800
n=2000
n=3400
n=4000
Figura 6.3: Speedup Escalado de MTriIU en Aldebaran. Memoria Compartida
6.2. Metodo MBidiag
Se pueden encontrar en [Chu00] y [LM01] metodos para la resolucion del
PIVSVP propuestos por Chu y por Li y Mathias, respectivamente. Chu se basa
en la construccion de una matriz cuasitriangular inferior y Li y Mathias en una
matriz triangular superior con valores propios y valores singulares prestableci-
dos.
En esta seccion se propone un metodo alternativo a los ya mencionados para
155
resolver el PIVSVP, mediante la construccion de una matriz bidiagonal con
con valores propios y valores singulares prestablecidos, los cuales satisfacen las
restricciones que establece el siguiente teorema.
Teorema 1 Dada una matriz An×n, con valores propios L1, L2, ..., Ln y valores
singulares S1, S2, ..., Sn, tales que
|L1| ≥ |L2| ≥ ... ≥ |Ln| y S1 ≥ S2 ≥ ... ≥ Sn,
entonces
|L1||L2|...|Li| ≤ S1S2...Si (i = 1, n− 1) (6.15)
|L1||L2|...|Ln| = S1S2...Sn (6.16)
Entonces, el PIVSVP se puede enunciar como: dados los conjuntos de valores
reales S∗ = {S∗1 , S∗
2 , ..., S∗n} y L∗ = {L∗
1, L∗2, ..., L
∗n}, tales que S∗
1 ≥ S∗2 ≥ ... ≥
S∗n y L∗
1 ≥ L∗2 ≥ ... ≥ L∗
n, y que cumplen las condiciones (6.15) y (6.16), construir
una matriz bidiagonal A ∈ <n×n cuyos valores propios sean L∗ y cuyos valores
singulares sean S∗. Como A es bidiagonal, se puede conseguir facilmente que
posea los valores propios L∗ si toma la forma
A(c) =
L∗1
c1 L∗2
c2 L∗3
. . .. . .
cn−1 L∗n
, (6.17)
quedando por calcular los parametros c1, c2, ..., cn−1 tales que los valores sin-
gulares de A(c) sean S∗. Para ello, se define la matriz simetrica
T (c) = A(c)A(c)t =
L∗21 L∗
1c1
L∗1c1 c2
1 + L∗22 L∗
2c2
L∗2c2 c2 + L∗2
3
. . .. . .
L∗n−1cn−1 c∗n−1 + L∗2
n
(6.18)
que se puede expresar como
T (c) = diag(L∗2
1 , L∗22 , ..., L∗2
n
)+
+ c21e2e
t2 + c2
2e3et3 + ... + c2
n−1enetn+
+ c1L∗1(e2e
t1 + e1e
t2) + c2L
∗2(e3e
t2 + e2e
t3) + ...+
+ cn−1L∗n−1(enet
n−1 + en−1etn) (6.19)
156
donde ei es el i−esimo vector canonico (i = 1, n). Como T (c) se ha construido
de acuerdo a (6.18), los valores propios de T (c) son el cuadrado de los valores
singulares de A(c). Como se desea que A(c) tenga los valores singulares S∗,
entonces se tiene el problema de calcular el vector c ∈ <n−1 tal que los valores
propios de T (c), denotados con Li(c) (i = 1, n), sean S∗2i (i = 1, n). Para
resolver este problema se define el sistema de n − 1 ecuaciones no lineales con
n− 1 incognitas F (c) = 0 de la forma
F (c) = [Fi(c)]i=1,n−1 =[Li(c)− S∗2
i
]
i=1,n−1= 0. (6.20)
Resolver (6.20) implica que se ha encontrado la matriz T (c) (de la ecuacion
(6.18) o (6.19)) que tiene los n− 1 valores propios deseados S∗2i (i = 1, n− 1),
es decir, que se ha encontrado la matriz A(c) (de la ecuacion (6.17)) que tiene
los n− 1 valores singulares deseados S∗i (i = 1, n− 1). Como se ha partido del
supuesto de que S∗ y L∗ satisfacen (6.16):
|L∗1||L∗
2|...|L∗n| = S∗
1S∗2 ...S∗
n ⇒ S∗n =|L∗
1||L∗2|...|L∗
n|S∗
1S∗2 ...S∗
n−1
,
por lo que, resolver (6.20) es construir A(c) con los n valores singulares deseados
S∗.
Para resolver el sistema de ecuaciones no lineales (6.20) se utiliza el algoritmo
de Newton. Para ello, es necesario calcular la matriz Jacobiana de F (c), la que
esta definida como
J(c) =
[∂Fi(c)
∂cj
]
i,j=1,n−1
=
[∂Li(c)
∂cj
]
i,j=1,n−1
. (6.21)
A partir de la descomposicion en valores propios de T (c),
T (c) = Q(c)diag (L1(c), L2(c), ..., Ln(c)) Q(c)t,
donde Q(c) es ortogonal, es decir, a partir de
diag (L1(c), L2(c), ..., Ln(c)) = Q(c)tT (c)Q(c),
si se definen L ≡ L(c), Q ≡ Q(c) y T ≡ T (c), se tiene que
Li = qtiTqi (i = 1, n)
⇒ ∂Li
∂cj=
∂ (qtiTqi)
∂cj=
∂qti
∂cjTqi + qt
i
∂T
∂cjqi + qt
iT∂qi
∂cj
(i = 1, n; j = 1, n− 1). (6.22)
Definiendo J ≡ J(c) y sustituyendo (6.22) en (6.21), se tiene que
Jij = qti
∂T (c)
∂cjqi (i, j = 1, n− 1), (6.23)
157
lo que se justifica porque, al ser Q ortogonal, qtiqi = 1 (i = 1, n), es decir
(qi)21 + (qi)
22 + ... + (qi)
2n = 1
⇒ 2 (qi)21
∂ (qi)1∂cj
+ 2 (qi)22
∂ (qi)2∂cj
+ ... + 2 (qi)2n
∂ (qi)n
∂cj= 0
⇒[∂ (qi)1∂cj
∂ (qi)2∂cj
...∂ (qi)n
∂cj
]
[(qi)1 (qi)2 ... (qi)n]t= 0.
⇒[
∂qi
∂cj
]t
ij=1,n−1
= 0
Por otra parte, la derivada parcial de T , definida en (6.19), con respecto a
cj es∂T
∂cj= 2cjej+1e
tj+1 + L∗
j
(ej+1e
tj + eje
tj+1
)(j = 1, n− 1),
que al sustituirla en (6.23), da como resultado
Jij = qti
[2cjej+1e
tj+1 + L∗
j
(ej+1e
tj + eje
tj+1
)]qi =
= 2cjqtiej+1e
tj+1qi + L∗
jqti
(ej+1e
tj + eje
tj+1
)qi =
= 2cjqj+1,ietj+1qi + L∗
jqj+1,ietjqi + L∗
jqj,ietj+1qi =
= 2cjqj+1,iqj+1,i + L∗jqj+1,iqj,i + L∗
jqj,iqj+1,i =
= 2cjq2j+1,i + 2L∗
jqj,iqj+1,i = 2cjq2j+1,i + 2L∗
jqj,iqj+1,i (i = 1, n− 1). (6.24)
Definida la matriz jacobiana de F (c), se puede aplicar la iteracion de Newton:
c(k) = c(k−1) − J (k−1)−1F (k−1), k = 1, 2, ...
que convergera cuadraticamente si se parte de un vector c(0) suficientemente
cercano a la solucion del sistema (6.20). Cuando el algoritmo de Newton haya
calculado dicha aproximacion, se podra construir la matriz A(c) con valores
propios L∗ y valores singulares S∗. El algoritmo correspondiente a este procedi-
miento y experimentos numericos se dan en la siguiente seccion.
6.2.1. Algoritmo MBidiag y Experimentos Numericos
El algoritmo mediante el cual se construye una matriz bidiagonal A(c) con
valores propios L∗ y valores singulares S∗ dados, esta en el Algoritmo 60.
Algunos experimentos numericos se han realizado utilizando casos del tipo
Bidiag, ejecutando el Algoritmo MBidiag en el cluster Kipling. Dado que MBidi-
ag es un algoritmo tipo Newton, se han utilizado diferentes vectores iniciales c(0),
algunos mas cercanos y otros mas alejados del vector solucion (controlada esta
distancia con δ), mostrando los resultados que este es un metodo robusto dado
que ha convergido en la mayorıa de los casos.
158
Algoritmo 60 MBidiag
1. Calcular T (c(0)) y A(c(0)) de acuerdo a (6.19) y (6.17)
2. Calcular la descomposicion en valores propios de T (c(0))[Q(0), diag(L(0))
]← dsyev(T (c(0)))
3. Calcular los valores singulares de A(c(0))
diag(S(0))← dgesvd(A(c(0)))
4. Para k = 0,1,2,..., Mientras ‖S(k) − S∗‖2 > tol
4.1. Calcular J (k) de acuerdo a (6.24)
4.2. Calcular F (k) de acuerdo a (6.20)
4.3. Resolver el sistema J (k)x(k) = −F (k)
x(k) ← dgesv(J (k),−F (k))
4.4. c(k+1) ← c(k) + x(k)
4.5. Calcular T (c(k+1)) y A(c(k+1)) de acuerdo a (6.19) y (6.17)
4.6. Calcular la descomposicion en valores propios de T (c(k+1))[Q(k+1), diag(L(k+1))
]← dsyev(T (c(k+1))
4.7. Calcular los valores singulares de A(c(k+1))
diag(S(k+1))← dgesvd(A(c(k+1)))
Los resultados de experimentos para tamanos pequenos pueden verse en la
Tabla 6.7, donde k denota el numero de iteraciones que MBidiag ha requerido
para converger. Para los tamanos n = {25, 50, 100} se tienen algunos problemas
de convergencia para los casos donde c(0) esta mas alejado de la solucion.
159
Tabla 6.7: Resultados del caso Bidiag con MBidiag, para n = {4, 10, 25, 50, 100}, con c(0)i =
c∗i + δ (i = 1, n)
n δ ‖S(0) − S∗‖2 ‖L(0) − L∗‖2 k ‖S(k) − S∗‖2 ‖L(k) − L∗‖2
4 1e-3 9e-4 0 3 3e-16 0
1e-2 9e-3 0 3 1e-14 0
1e-1 9e-2 0 5 8e-17 0
1e+0 1e+0 0 11 4e-14 0
1e+1 1e+1 0 13 5e-16 0
1e+2 1e+2 0 13 4e-16 0
10 1e-3 1e-3 0 3 4e-15 0
1e-2 1e-2 0 3 6e-15 0
1e-1 1e-1 0 4 4e-15 0
1e+0 2e+0 0 241 7e-15 0
1e+1 2e+1 0 713 2e-15 0
1e+2 2e+2 0 188 1e-14 0
25 1e-3 3e-3 0 3 1e-14 0
1e-2 3e-2 0 4 1e-14 0
1e-1 3e-1 0 13 1e-14 0
1e+0 3e+0 0 — — —
1e+1 3e+1 0 56 4e-13 0
1e+2 4e2 0 — — —
50 1e-3 4e-3 0 1106 4e-14 0
1e-2 4e-2 0 67 4e-14 0
1e-1 4e-1 0 — — —
1e+0 4e+0 0 — — —
1e+1 4e+1 0 6 3e-12 0
100 1e-3 6e-3 0 3 2e-13 0
1e-2 6e-2 0 3 1e-12 0
1e-1 6e-1 0 9 3e-13 0
1e+0 6e+0 0 — — —
1e+1 6e+1 0 3 1e-9 0
En la Tabla 6.8 se tienen otros resultados para casos de mayor tamano. En
todos los experimentos realizados se ha logrado converger a una solucion. Por
la forma en que se construye la matriz bidiagonal A(c), mientras que los valores
singulares deseados S∗ se aproximan mediante el metodo de Newton, los valores
propios deseados L∗ siempre son exactos, como lo muestra el error absoluto
‖L(k) − L∗‖2.
160
Tabla 6.8: Resultados del caso Bidiag con MBidiag, para n = {150, 200, 400, 500, 1000}, con
c(0)i = c∗i + δ (i = 1, n)
n δ ‖S(0) − S∗‖2 ‖L(0) − L∗‖2 k ‖S(k) − S∗‖2 ‖L(k) − L∗‖2
150 1e-1 8e-1 0 7 7e-13 0
1e+0 8e+0 0 5 4e-11 0
1e+1 6e+1 0 3 1e-9 0
1e+2 8e+2 0 72 4e-9 0
200 1e-3 9e-3 0 1 1e-8 0
1e-2 9e-2 0 1 1e-8 0
1e-1 9e-1 0 2 1e-8 0
1e+0 9e+0 0 2 3e-8 0
1e+1 9e+1 0 4 5e-9 0
1e+2 9e+2 0 5 1e-8 0
400 1e-3 1e-2 0 1 4e-8 0
1e-2 1e-1 0 1 4e-8 0
1e-1 1e+0 0 2 4e-8 0
1e+0 1e+1 0 5 4e-8 0
1e+1 1e+2 0 3 4e-8 0
500 1e-3 1e-2 0 6 4e-8 0
1e-2 1e-1 0 3 4e-8 0
1e-1 1e+0 0 27 4e-8 0
1e+0 1e+1 0 18 4e-8 0
1e+1 1e+2 0 25 4e-8 0
1e+2 1e+3 0 4 2e-8 0
1000 1e-3 2e-2 0 1 3e-7 0
1e-2 2e-1 0 1 1e-7 0
1e-1 2e+0 0 2 1e-7 0
1e+0 2e+1 0 2 2e-7 0
1e+1 2e+2 0 3 1e-7 0
1e+2 2e+3 0 5 1e-7 0
Se han implementado los metodos propuestos por Chu [Chu00] y Li y Ma-
thias [LM01] con el fin de compararlos con el metodo MBidiag, para lo que se
han tomado casos de prueba del tipo Bidiag y se han probado numericamente
con los tres metodos. Los resultados estan en la Tabla 6.9, donde
eaS = ‖S − S∗‖2, erS =‖S − S∗‖2‖S∗‖2
,
eaL = ‖L− L∗‖2, erL =‖L− L∗‖2‖L∗‖2
,
son los errores finales alcanzados por los algoritmos; S denota los valores sin-
gulares de las matrices construidas por los algoritmos y L denota los valores
propios de las mismas.
161
Tabla 6.9: Metodos de Chu v.s. Li-Mathias v.s. MBidiag
MBidiag Metodo Chu Metodo Li-Mathias
n eaS erS eaL erL eaS erS eaL erL eaS erS eaL erL
5 3e-16 1e-16 0 0 6e-16 1e-16 2e-16 6e-17 1e-15 2e-16 4e-16 1e-16
10 1e-14 1e-15 0 0 2e-15 1e-16 1e-15 1e-16 1e-15 1e-16 2e-15 2e-16
25 1e-14 2e-16 0 0 1e-14 2e-16 4e-15 1e-16 1e-14 2e-16 4e-15 1e-16
50 3e-12 2e-16 0 0 3e-12 2e-16 1e-12 1e-16 1e-12 2e-16 1e-12 1e-16
100 1e-9 3e-16 0 0 1e-9 3e-16 4e-10 1e-16 1e-9 3e-16 1e-9 3e-16
150 3e-9 4e-16 0 0 3e-9 4e-16 8e-10 1e-16 2e-9 3e-16 1e-9 2e-16
200 5e-9 1e-16 0 0 6e-9 5e-16 1e-9 1e-16 4e-9 4e-16 2e-8 2e-15
400 4e-8 1e-15 0 0 3e-8 9e-16 3e-9 1e-16 1e-8 5e-16 1e-7 4e-15
500 2e-8 5e-16 0 0 3e-8 7e-16 4e-9 1e-16 3e-8 6e-16 1e-8 4e-16
750 8e-8 9e-16 0 0 8e-8 1e-15 8e-9 1e-16 5e-8 6e-16 3e-7 4e-15
1000 1e-7 1e-15 0 0 1e-7 1e-15 1e-8 1e-16 5e-8 4e-16 3e-7 5e-15
1250 4e-7 2e-15 0 0 3e-7 1e-15 1e-8 1e-16 8e-8 4e-16 1e-6 1e-14
1500 2e-7 9e-16 0 0 3e-7 1e-15 2e-8 1e-16 1e-7 4e-16 7e-7 3e-15
2000 3e-7 1e-15 0 0 6e-7 1e-15 3e-8 1e-16 2e-7 6e-16 2e-6 1e-15
Los resultados de la Tabla 6.9 muestran que los tres metodos tienen el mis-
mo comportamiento con respecto a los valores singulares de las matrices que
construyen, sin embargo, la matriz construida por el metodo MBidiag siempre
tiene los valores propios deseados exactos, mientras que los otros metodos los
aproximan.
6.3. Conclusiones
El problema de la construccion de una matriz triangular inferior unidad con
valores singulares prestablecidos, visto en la Seccion 6.1, es una muestra de
un problema cuya resolucion se aborda mas natural y convenientemente bajo
un esquema de memoria compartida. Esta conclusion se da a partir del estu-
dio y analisis de diversas implementaciones de sus correspondientes algoritmos
secuenciales y paralelos.
El codigo paralelo disenado para el modelo de Memoria Distribuida alcanza
buenos niveles de paralelismo en cuanto a la fase de computo se refiere. Sin
embargo, una vez que la matriz A se ha calculado, esta queda distribuida de
forma que es necesario reunir todos sus componentes en un solo procesador;
las comunicaciones para realizar este paso merman las ganancias obtenidas del
codigo paralelo. Este problema puede tratarse si el mismo algoritmo se adapta
a un esquema de Memoria Compartida, donde las comunicaciones finales para
reunir A en un procesador no son necesarias. Mas aun, las comunicacinoes nece-
sarias para replicar z y U en el modelo de Memoria Distribuida tampoco son
necesarias en el esquema de Memoria Compartida.
162
Una comparativa de los modelos de Memoria Distribuida y Memoria Com-
partida del algoritmo MTriIU para el PIVSVP se resumen en la siguiente tabla:
Memoria Compartida Memoria Distribuida
* Facilidad de implementacion * Implementation Compleja
* * No requere estructuras de * Require estructuras de datos
datos adicionales de control
* * Distribucion de carga * Distribucion manual (por parte
mediante el uso de directivas del programador) de carga de trabajo
de compilador adecuadas
* * Eficiencia aceptable mayor * No alcanza prestaciones aceptables
que 90% hasta con 4 hilos por las etapas de comunicaciones
Por lo tanto, bajo el esquema de Memoria Compartida se han logrado dis-
minuir los tiempos de ejecucion secuenciales del algoritmo MTriIU y se han
obtenido muy buenas prestaciones hasta con 4 hilos de ejecucion: logrando un
Speedup de, al menos, 1.8, 2.6 y 3.6 con 2, 3 y 4 hilos de procesamiento co-
rrespondientemente, para los casos n ≥ 2000 (Figura 6.2), lo que corresponde a
una eficiencia > 90% (Tabla 6.6), obteniendo tambien una buena escalalibidad
hasta con 4 hilos. Las prestaciones se ven mermadas con mas de 4 hilos de eje-
cucion por ser Aldebaran, aunque un multiprocesador logicamente, fısicamente
una multicomputadora, por lo que, finalemente, se realizan pasos de mensajes
entre unidades de procesamiento, aunque esto sea transparente al programador.
En muchos problemas la programacion paralela bajo el esquema de memoria
compartida es mas adecuada que la de memoria distribuida, por la naturaleza
de la resolucion del problema que se esta tratando, como el presentado en este
trabajo, pues la distribucion de los calculos ha resultado ser muy sencilla y
adaptada naturalmente al esquema de memoria compartida.
Por otra parte, el metodo MBidiag para la construccion de una matriz bi-
diagonal con valores propios y valores singulares prestablecidos, propuesto en la
Seccion 6.2, ha resultado ser de alta robustez experimental, ya que en la mayorıa
de los casos probados, se ha obtenido una matriz cuyos valores singulares son
aproximados con alta exactitud para los casos de tamano pequeno y con una
exactitud aceptable para los casos de mayor tamano; mientras que los valores
propios de tal matriz estan dados directamente en su diagonal.
Ante algoritmos que resuelven el mismo problema, como el de Chu [Chu00]
y el de Li-Mathias [LM01], construyendo matrices cuasitriangular superior y
triangular inferior, respectivamente, el metodo MBidiag ha resultado ser tan
bueno como estos, alcanzando aproximaciones a los valores singulares con el
163
mismo orden de exactitud. Mientras que estos autores construyen matrices trian-
gulares, MBidiag construye una matriz que es aun mas simple en estructura, ya
que construye una matriz bidiagonal, que tanto en el almacenamiento como en
los calculos para manipularla es menos costosa que las triangulares.
Con los algoritmos MTriIU y MBidiag se dan los precedentes para la inves-
tigacion de metodos que resuelven el PIVS y el PIVP simultaneamente.
164
Capıtulo 7
Conclusiones y Perspectivas
Esta tesis constituye una de las etapas de diseno, desarrollo e implementacion
de una biblioteca numerica secuencial y paralela que agrupa rutinas eficientes
y portables que resuelven el Problema Inverso de Valores Propios (PIVP) y el
Problema Inverso de Valores Singulares (PIVS). Especıficamente, en esta tesis
se ha estudiado un conjunto de metodos y se han disenado e implementado algo-
ritmos secuenciales y paralelos correspondientes para la resolucion del Problema
Inverso de Valores Singulares (PIVS), el que se ha clasificado en este trabajo co-
mo: Problema Inverso Aditivo de Valores Singulares (PIAVS), Problema Inverso
Estructurado de Valores Singulares (PIEVS) y Problema Inverso de Valores Sin-
gulares y Valores Propios (PIVSVP).
Para la resolucion del PIAVS, se ha tomado como base un conjunto de cua-
tro metodos tipo Newton que Friedland, Nocedal y Overton han propuesto
en [FNO87] para la resolucion de PIVP, denominados Method I, Method II,
Method III y Method IV. Lift&Project es otro metodo que constituye la base
sobre la que se ha resuelto el PIAVS. Lift&Project es un metodo que resuelve
el PIVP y que ha sido propuesto por Chen y Chu en [CC96].
Ası, en el Capıtulo 2 se han introducido los metodos FB, MI, EP y MIII para
resolver el PIAVS. FB es un metodo tipo Newton de concepcion muy sencilla que
ha sido desarrollado en esta tesis como una primera alternativa para resolver el
PIAVS cuando este constituye directamente un sistema de ecuaciones no lineales.
MI y MIII son adaptaciones de Method I y Method III, respectivamente, la
primera ha sido realizada en este trabajo y la segunda ha sido desarrollada por
Chu en [Chu92a]. EP es una adaptacion de Lift&Project y ha sido desarrollada
tambien en esta tesis.
Los algoritmos de FB, MI, EP y MIII son todos de un alto costo com-
putacional, tanto espacial como temporal. FB es el mas costoso de todos con
un orden de complejidad de tiempo de O(n6) y de complejidad de espacio de
O(n4), mientras que el resto de los algoritmos estan en el orden de O(n4) en el
165
tiempo y O(n3) en el espacio. Se han identificado dos tipos de algoritmos: los de
convergencia local y los de convergencia global. FB, MI y MIII se consideran de
convergencia local (a los que les lleva pocas iteraciones converger a una solucion,
siempre que partan de una aproximacion inicial cercana a la esta), mientras que
EP se considera de convergencia global (al que le le lleva muchas iteraciones
converger a una solucion, independientemente de la aproximacion inicial dada).
De acuerdo a sus caracterısticas, MI ha sido el algoritmo mas eficiente y FB el
menos. EP ha sido el algoritmo que ha demandado menos almacenaje que MI,
MIII y FB (el que es altamente costoso). Los resultados mas importantes que se
han expuesto en este parrafo corresponden a los obtenidos del estudio teorico y
numerico de los algoritmos que se ha realizado en el Capıtulo 3.
El diseno paralelo y la implementacion de los algoritmos de los metodos
que resuelven el PIAVS son aportes de esta tesis y han derivado en rutinas
paralelas que han cumplido con el cometido de disminuir los tiempos de ejecucion
secuenciales. Se ha detallado el diseno paralelo de cada metodo en el Capıtulo 4.
En todos los disenos se ha tratado de evitar en lo posible la redistribucion de
datos y de minimizar el trafico de mensajes entre procesadores. Se han estimado
los tiempos de ejecucion teoricos que han resultado ser buenas aproximaciones de
los tiempos que se han medido de los diversos experimentos que se han realizado,
de esta forma se ha podido analizar el comportamiento de los algoritmos en
situaciones hipoteticas.
En terminos generales, MI y MIII han observado un comportamiento similar;
las prestaciones de los algoritmos paralelos correspondientes han sido suficien-
temente buenas desde el punto de vista del Speedup y la Eficiencia; ambos
pueden considerarse algoritmos paralelos con escalabilidad aceptable. El algo-
ritmo paralelo EP ha mejorado las prestaciones de MI y MIII cuando el numero
de procesadores se ha incrementado y tambien ha presentado un mejor compor-
tamiento respecto de la escalabilidad. Por otra parte, FB ha requerido de intensa
redistribucion de datos en el algoritmo paralelo correspondiente, lo que ha ido
en detrimento de sus prestaciones, sin embargo, el paralelismo da la posibilidad
de manejar problemas cuyo tamano serıa imposible de manejar secuencialmente.
Los algoritmos secuenciales y paralelos FB, MI, EP y MIII han sido disenados
sin distinguir estructuras especiales de las matrices involucradas en el PIAVS;
sin embargo, se puede incidir en la mejora del tiempo de ejecucion y de los
requerimientos de memoria al explotar las caracterısticas estructurales de las
matrices. En esta tesis se ha considerado la particularizacion de las matrices del
PIAVS en matrices tipo Toeplitz en el Capıtulo 5, definiendose ası el PIEVS.
Las caracterısticas estructurales de las matrices tipo Toeplitz, han dado lu-
gar al diseno e implementacion de un algoritmo eficiente para el calculo de los
valores singulares de una matriz tipo Hankel, basado en la FFT; de este modo,
como aporte en esta tesis se ha conseguido desarrollar un algoritmo de orden
166
O(n2logn) que es de un orden de complejidad de tiempo menor que el orden
O(n3) correspondiente a la descomposicion en valores singulares de una matriz
no estructurada. Sobre esta rutina eficiente descansa la adaptacion de los algo-
ritmos MI y EP que se han redisenando para aprovechar la estructura Toeplitz,
lo que ha dado lugar a los algoritmos MIE y EPE, cuya version secuencial ha
resuelto el PIEVS eficientemente y ha disminuido los tiempos de ejecucion de
MI y EP secuenciales, correspondientemente.
Se han desarrollado tambien algoritmos paralelos MIE y EPE que han lo-
grado el objetivo de disminuir los tiempos de ejecucion secuenciales. Aunque las
prestaciones de estos algoritmos estan por debajo de las de MI y EP paralelos, al
menos con 2 y 4 procesadores presentan prestaciones aceptables para problemas
de tamano grandes.
Un problema que combina tanto el PIVP y el PIVS es el Problema Inverso
de Valores Singulares y Valores Propios (PIVSVP). Una primera aproximacion
a la resolucion del PIVSVP se ha dado en el Capıtulo 6 de esta tesis a traves
del algoritmo denominado MTriIU que resuelve un caso particular del PIVSVP.
MTriIU ha sido desarrollado por Kosowski y Smoktunowicz en [KA00]. Se han
propuesto dos algoritmos paralelos, uno disenado bajo el modelo de memoria
distribuida y otro bajo el modelo de memoria compartida. Por la naturaleza
del algoritmo MTriIU, su paralelizacion ha resultado ser mas adecuada bajo el
modelo de memoria compartida, logrando disminuir los tiempos de ejecucion se-
cuenciales y obteniendose un algoritmo con escalabilidad aceptable y con buenas
prestaciones con respecto a Speedup y Eficiencia.
Por ultimo se ha desarrollado en esta tesis un metodo denominado MBi-
diag que, al igual que los presentados por Chu en [Chu00] y por Li y Mathi-
as en [LM01], construye una matriz con valores singulares y valores propios
prestablecidos y que, a diferencia de ellos, que construyen matrices cuasi trian-
gular superior y triangular inferior, respectivamente, construye matrices bidiag-
onales, lo que supone un bajo costo computacional. Resultados experimentales
han mostrado que el metodo MBidiag ha sido altamente robusto al dar solu-
ciones satisfactorias al PIVSVP, pudiendo equipararse a los algoritmos de Chu
y Li-Mathias.
Todos los algoritmos implementados en esta tesis han sido codificados en
Fortran y han utilizado rutinas portables y eficientes de bibliotecas de libre
distribucion tales como: bibliotecas secuenciales del algebra lineal numerica,
como BLAS y LAPACK; bibliotecas paralelas del algebra lineal numerica, co-
mo PBLAS y ScaLAPACK; bibliotecas de comunicaciones a traves de paso de
mensajes, como BLACS y el entorno MPI. Dado que se han implementado al-
goritmos bajo una arquitectura de memoria compartida, se ha hecho uso del
modelo de programacion paralela OpenMP a traves de directivas de compilador
de Fortran. El uso de estas herramientas software soportan las caracterısticas
167
de eficiencia y portabilidad de los algoritmos implementados.
Las arquitecturas de computadoras que han sido utilizadas en la imple-
mentacion y experimentacion de los algoritmos han sido multicomputadoras
de memoria distribuida, especıficamente clusters de PCs, ası como multiproce-
sadores de memoria compartida distribuida. Estas computadoras han sido para-
metrizadas con respecto a tiempo de flop, tiempo de latencia y ancho de banda
para estimar teoricamente el comportamiento temporal de los algoritmos, lo
que ha resultado en aproximaciones que han predicho suficientemente bien el
comportamiento experimental, de tal suerte que con este tipo de analisis se ha
podido prever el comportamiento de los algoritmos, identificando secciones de
baja productividad paralela, y ha permitiendo aplicar las medidas pertinentes
para mejorar los puntos debiles de los algoritmos siempre que ha sido posible.
A diferencia de los experimentos numericos reportados hasta el momento en
la literatura (con tamanos de problemas del orden de O({100, 101})), en esta
tesis se han realizado experimentos con problemas de gran tamano (del orden de
O({102, 103})), tanto secuencial como paralelamente, introduciendo matrices ra-
zonablemente grandes. Se han realizado experimentos numericos con diferentes
tipos de matrices, desde matrices generales (sin estructura particular ni valores
especıficos) hasta matrices estructuradas como tipo Toeplitz y triangulares.
Por lo tanto, los objetivos propuestos en esta tesis han sido alcanzados.
Se han dado los primeros pasos para la resolucion del Problema Inverso de
Valores Singulares mediante el diseno e implementacion de algoritmos paralelos
eficientes y portables.
Perspectivas
Un trabajo inmediato que se desprende del presentado en esta tesis es el
diseno adecuado y la implementacion bajo el modelo de memoria compartida
de los algoritmos que resuelven el PIAVS.
Tambien puede realizarse un estudio de los metodos propuestos para el PI-
AVS para extenderlos al manejo de valores singulares replicados, S∗1 = S∗
2 =
· · · = S∗p > S∗
p+1 · · · > S∗n; valores singulares nulos, S∗
1 > S∗2 > · · · > S∗
p =
S∗p+1 = · · · = S∗
n = 0; o al manejo de un subconjunto de valores singulares,
S∗1 > S∗
2 > · · · > S∗p , con p < n.
El diseno optimo de un algoritmo secuencial y el diseno, implementacion,
analisis teorico de prestaciones y experimentacion de un algoritmo paralelo co-
rrespondiente al metodo MBidiag es un desarrollo que se tiene previsto brinde
una nueva rutina paralela, eficiente y portable que forme parte de la biblioteca
del PIVSVP, teniendo con esto un trabajo que queda por realizar en el futuro.
Un problema fundamental en los metodos de tipo Newton es la seleccion de
la aproximacion inicial a la solucion, a partir de la cual se calculan sucesivas
168
aproximaciones. Este constituye un problema abierto en esta tesis, el cual forma
parte del que llamaremos problema de globalizacion, cuya resolucion consiste,
en terminos generales, en desarrollar tecnicas que permitan resolver el PIAVS
bajo cualesquiera condiciones (entre otras, partiendo de cualquier aproximacion
inicial o partiendo de una de facil calculo y que garantice la convergencia del
algoritmo), obteniendo algoritmos que convergen bajo cualquier circunstancia,
contribuyendo ası a la robustez de los mismos.
Un tarea importante que queda por realizar es la implementacion en el cluster
MareNostrum de todos los algoritmos disenados en este trabajo, de modo que se
pueda tomar ventaja de las caracterısticas de alto rendimiento de este cluster.
Los resultados que de ello se obtengan, permitiran analizar el comportamiento
de los algoritmos y compararlos con los resultados de implementaciones en otros
clusters, como los reportados en este trabajo, para la mejora de las prestaciones
paralelas de algoritmos de alto costo computacional.
Publicaciones
El desarrollo de esta tesis ha sido soportado por el proyecto de investi-
gacion Desarrollo y Optimizacion de Codigo Paralelo para Sistemas de Audio
3D (TIC2003-08238-C02-02), subvencionado por la Comision Interministerial
de Ciencia y Tecnologıa del 1 de Diciembre de 2003 al 30 de Noviembre del 2006.
Las publicaciones al respecto de este trabajo de tesis son:
G.B.Flores, P.V. Alberti , A.M.Vidal. Solucion Paralela del Problema Inverso
Simetrico Multiplicativo de Valores Propios. XIII Jornadas de Paralelismo. Ac-
tas de las XIII Jornadas de Paralelismo. ISBN: 84-8409-159-7. Septiembre, 2002.
Lleida, Espana.
G.Flores, A.M.Vidal. Paralelizacion del Metodo de Elevacion y Proyeccion para
la Resolucion del Problema Inverso de Valores Singulares. Congreso interna-
cional de Computacion Paralela, Distribuida y Aplicaciones. Actas del Congre-
sos. ISBN: 968-5823-04-09. Septiembre, 2003. Linares, Mexico.
Georgina Flores Becerra, Antonio M. Vidal Macia. Parallel Global and Local
Convergent Algorithms for Solving the Inverse Additive Singular Value Problem.
4th WSEAS International Conference on Systems Theory and Scientific Com-
putation (ISTASC’ 04). Actas en CD. ISBN: 960-8547-06-8. Diciembre, 2004.
Puerto de la Cruz (Espana).
Publicacion en: Wseas Transactions on Circuits and Systems (ISSN: 1109-2734).
Volumen: 3, Issue 10, pp 2241-2246. Diciembre, 2004.
169
D.A.Campo, F.J.Correa, G.Flores, A.M.Vidal. Parallel Global Convergent Algo-
rithms for solving the Inverse Additive Singular Value Problem. IADIS Interna-
tional Conference 2005. Proceedings of the Conference. Febrero, 2005. Algarve
(Portugal).
Georgina Flores Becerra, Vıctor M. Garcıa, Antonio M. Vidal. Numerical Ex-
periments on the Solution of the Inverse Additive Singular Value Problem. Inter-
national Conference on Computacional Science 2005. Proceedings of the Con-
ference. Mayo, 2005. Atlanta (USA).
Publicacion en: Lecture Notes in Computer Science (ISSN:0302-9743). Volumen:
3514, pp 17-24. Mayo, 2005.
Georgina Flores Becerra, Vıctor M. Garcıa, Antonio M. Vidal. Parallelization of
a Method for the Solution of the Inverse Additive Singular Value Problem. 8th
WSEAS International Conference on APPLIED MATHEMATICS (aceptado).
Diciembre, 2005. Islas Canarias (Espana).
Georgina Flores Becerra, Vıctor M. Garcıa, Antonio M. Vidal. Efficient Parallel
Algorithm for Constructing a Unit Triangular Matrix with Prescribed Singular
Values. 7th International Meeting on High Performance Computing for Compu-
tational Science (VECPAR’06) (sometido). Julio, 2006. Rıo de Janeiro, Brasil.
170
Bibliografıa
[ABB+95] E. Anderson, Z. Bai, C. Bishof, Demmel J., and Dongarra J. LA-
PACK User Guide; Second edition. SIAM, 1995.
[BCC97] L.S. Blackford, J. Choi, and A. Clearly. ScaLAPACK User’s
Guide. SIAM, 1997.
[BMX03] Zheng−jian Bai, Benedetta Morini, and Shu−fang Xu. The inter-
cept method for inverse singular value problems. 2003.
[Bro91] R.W. Brockett. Dynamical sustems that sort lists and solve
the linear programming problems. Proc. 27th IEEE Conf. De-
cision and Control and Linear Alg. Appl., -,146:799–803,79–91,
1988,1991.
[BV99] J.M. Badıa and A.M. Vidal. Resolucion paralela del problema in-
verso de los valores propios de matrices de toeplitz reales simetri-
cas. Technical Report DI01-04/99, Departamento de Informatica,
Universidad Jaime I, 1999.
[CBM03] Raymond H. Chan, Zheng−jian Bai, and Benedetta Morigi. On
the convergence rate of a newton-like method for inverse eigenva-
lue and inverse singular value problems. International Journal of
Applications Mathematics, 3, 2003.
[CC96] Xuzhou Chen and Moody T. Chu. On the least squares solu-
tion of inverse eigenvalue problems. SIAM,Journal on Numerical
Analysis, 33(6), 1996.
[CCFV05] D.A. Campo, F.J. Correa, G. Flores, and A.M. Vidal. Parallel
global convergent algorithms for solving the inverse additive sin-
gular value problem. Proceedings of the IADIS International Con-
ference. Applied Computing, pages 49–56, 2005.
[CDD+95] J. Choi, J. Demmel, I. Dhillon, J Dongarra, S. Ostrouchov, A. Pe-
titet, K. Stanley, D Walker, and R.C. Whaley. Scalapack: A
171
portable linear algebra library for distributed memory computers.
design issues and performance. 1995.
[CDK+01] R. Chandra, L. Dagum, D. Kohr, D. Maydan, J. McDonald, and
R. Menon. Parallel Programming in OpenMP. Morgan Kaufmann
Publishers, 2001.
[CDO+95] J. Choi, J. Dongarra, S. Ostrouchov, A. Petittet, and D. Walker.
A proposal for a set of parallel basic linear algebra subprograms.
Technical report ut−cs−95−292, Department of Computer Scien-
ce, University of Tennessee, 1995.
[Chu92a] Moody T. Chu. Numerical methods for inverse singular value
problems. SIAM, Journal Numerical Analysis, 29, 1992.
[Chu92b] M.T. Chu. Matrix differential equations: A continuous realiza-
tion process for linear algebra problems. Nonlinear Anal., TMA,
1(12):1125–1146, 1992.
[Chu98] Moody T. Chu. Inverse eigenvalue problems. SIAM, Review, 40,
1998.
[Chu99] Moody T. Chu. On constructing matrices with prescribed singular
values and diagonal elements. Journal Linear Algebra and its
Applications, 288:11–22, 1999.
[Chu00] Moddy T. Chu. A fast recursive algorithm for constructing ma-
trices with prescribed eigenvalues and singular values. SIAM,
Journal on Numerical Analysis, 37(3):1004–1020, 2000.
[Cor03] Intel Corporation. Intel(R) Fortran Language Reference (online
version). 2003.
[Cor04] Intel Corporation. Intel (R) Math Kernel Library. Reference Ma-
nual. 2004.
[DD95] J. Dongarra and T. Dunigan. Message-passing performance of
various computers. Technical Report, UT-CS-95-299. Department
of Computer Science, University of Tennessee, 1995.
[DHvdV93] J. Demmel, M. Heath, and H. van der Vorst. Parallel numerical
linear algebra. 1993.
[DS83] J.E. Dennis and R.B. Schnabel. Numerical Methods for Uncon-
strained Optimization and Nonlinear Equations. Prentice Hall,
1983.
172
[FBGV05] G. Flores-Becerra, V.M. Garcıa, and A.M. Vidal. Numerical ex-
periments on the solution of the inverse additive singular value
problem. ICCS 2005: 5th International Conference. Proceedings,
Part I, pages 17–24, 2005.
[FBVM03] Georgina Flores Becerra and Antonio M. Vidal Macia. Parale-
lizacion del metodo de elevacion y proyeccion para la resolucion
del problema inverso de valores singulares. Primer Congreso In-
ternacional de Computacion Paralela, Distribuida y Aplicaciones,
2003. Linares,Mexico.
[FNO87] S. Friedland, J.Nocedal, and M.L. Overton. The formulation and
analysis of numerical methods for inverse eigenvalue problems.
SIAM, Journal on Numerical Analysis, 24(3), 1987.
[FVA02] G. B. Flores, A. M. Vidal, and P. V. Alberti. Solucion paralela
del problema inverso simetrico multiplicativo de valores propios.
XIII Jornadas de Paralelismo, 2002. Lleida, Espana.
[Giu02] Mauro Giudici. Some problems for the applicat of inverse tech-
niques to environmental modelling. IndAM Workshop, Inverse
Problems and Applications, 2002.
[GLS94] W. Groupp, E. Lusk, and A. Skjellum. Using MPI: Portable Pa-
rallel Programming with Message Passing Interface. MIT Press,
1994.
[Gra98] Norman Gray. Course: Numerical astronomy 1. inverse problems.
Department of Physics and Astronomy. University of Glasgow,
1998.
[Gro99] Charles W. Groetsch. Inverse Problems. Activities for Undergra-
duates. The mathematical association of America, 1999.
[GvL96] G.H. Golub and C.F. van Loan. Matrix computations. Johns
Hopkins University Press, 1996.
[HDDCH88] S. Hammarling, J. Dongarra, J. Du Croz, and Richard J. Hanson.
An extended set of fortran basic linear algebra subroutines. ACM
Trans. Mathemathical Software, 1988.
[Hor54] A. Horn. On the eigenvalues of a matrix with prescribed singular
values. Proc. Amer. Math. Soc., 5:4, 1954.
[KA00] Przemyslaw Kosowski and Smoktunowicz Alicja. On constructing
unit triangular matrices with prescribed singular values. Compu-
ting, 64(3):279–285, 2000.
173
[Kel95] C. Kelley. Iterative Methods for Linear and Nonlinear Equations.
SIAM, 1995.
[KGGKrp94] V. Kumar, A. Grama, A. Gupta, and G. Kary pis. Introduction
to Parallel Computing. Desing and analysis algorithms. The Ben-
jamin/Cummings Publishing Company, 1994.
[LM01] Chi-Kwong Li and Roy Mathias. Construction of matrices with
prescribed singular values and eigenvalues. BIT, 41(1):115–126,
2001.
[MT97] I. Martin and F. Tirado. Relationships beteen efficiency and exe-
cution time of full multigrid methods on parallel computers. IEEE
Transactions on Parallel and Distributed Systems, 8(6), 1997.
[Pol03] Tiziano Politi. A discrete approach for the inverse singular value
problem in some quadratic group. Workshop: Numerical Methods
for Structured System. International Conference on Computation-
al Science, 2003.
[SG03] Inc. Silicon Graphics. Scientific Computing Software Li-
brary(SCSL) User’s guide. 2003.
[TF03] S. M. Tan and Colin Fox. Inverse problems. lecture courses. De-
partment of Physics, The University of Auckland, 2003.
[Tre97] W.F. Trench. Numerical solution of the inverse eigenvalue pro-
blem for real symmetric toeplitz matrices. SIAM, Journal on
Scientific Computing, 18(6):1722–1736, 1997.
[TV82] Albert Tarantola and Bernard Valette. Generalized nonlinear in-
verse problems solved using the least squares criterion. Reviews
of Geophysics and Space Physics, 20(2), 1982.
[VA01] A.M. Vidal and P.V. Alberti. Una implementacion paralela de una
solucion de mınimos cuadrados para el problema inverso aditivo
de valores propios. XII Jornadas de Paralelismo, 2001. Valen-
cia,Espana.
[VA02] A.M. Vidal and P.V. Alberti. Una aproximacion paralela al pro-
blema inverso aditivo de valores propios. Metodos Numericos en
Ingenierıa V, SEMNI, 2002.
[VL92] C. Van Loan. Computational Frameworks for the Fast Fourier
Transform. SIAM, 1992.
[VP00] A.M. Vidal and J.L. Perez. Introduccion a la programacion en
MPI. Publicaciones Universidad Politecnica de Valencia, 2000.
174