El Problema Lineal de Mínimos Cuadrados. …dis.um.es/~domingo/apuntes/CAP/0809/QR.pdf · puesto...
Transcript of El Problema Lineal de Mínimos Cuadrados. …dis.um.es/~domingo/apuntes/CAP/0809/QR.pdf · puesto...
(a0,b0)
(a1,b1)
(a2,b2)
(a3,b3)
(a4,b4)
x
y
33
2210 xxxxxxxy +++=
Imponiendo la condición de que la curva pase por los puntos conocidos se tiene
∑−
=
=
−=1
0
1,...,1,0 n
j
jiji axb
miPara
Ejemplo: Ajuste de una curva a una nube de puntos
A x b=
mnnm bxA ℜ∈ℜ∈ℜ∈ × ,, con
[ ] [ ] mTm
nTn
ji bbbbxxxxaa ℜ∈=ℜ∈== −− 110110ij ...,... ,y
El ajuste de la curva por mínimos cuadrados es equivalente a la resolución de un sistema de ecuaciones sobredeterminado:
En forma matricial
22min que talar EncontrResolver bAxbAxxbAx
nxLS
nLSLS −=−ℜ∈⇔=
ℜ∈
Problema Lineal de Mínimos Cuadrados
21
21
202
)(...)()( −−++−+−=− mbAxbAxbAxbAx
Para i=0,1,…,n-1ai
T(AxLS-b)=0
AT(AxLS-b)=0
ATAxLS=ATb Ecuaciones Normales del Problema Lineal de Mínimos Cuadrados
R(A)
b
Ax
AxLS
AxLS-b
Ecuaciones normales
Si se conoce
puesto que Q conserva la 2-norma vectorial se tiene
Por tanto el mínimo se alcanza en
y toma el valor
superior,r triangula, y )( ortogonal , con , 1 RQQQQRA Tnm −× =ℜ∈=
2
222
2112
2
2
2
2
2)( ccxRcRxbAxQbAx T −+−=−=−=−
con nmnTnnT cccc
cbQRR
RAQ −× ℜ∈ℜ∈
==ℜ∈
== 21
2
11
1 , , ,0
11
1 cRxLS−=
2
222
2min cbAx
nx=−
ℜ∈
R x c=A x b=
TQR1 c1
c2
AplicacionesProblemas de mínimos cuadrados; ajuste de funciones
a un conjunto de puntos.
Sea el siguiente conjunto de puntos (aleatorios) en el plano: (1,3), (2, -1), (4,7), (4.2,-3.5), (6,6) (8,8)
0 1 2 3 4 5 6 7 8 9 10-10
-8
-6
-4
-2
0
2
4
6
8
10
EjemploQueremos encontrar una función, de algún tipo
predefinido, que pase lo mas cerca posible de esos puntos;Por ejemplo, un polinomio de grado 3:
ax3+bx2+cx+d
Para cada punto planteamos la igualdad “deseada”:
para (1,3):a·13+b·12+c·1+d = 3
para (2,-1):a·23+b·22+c·2+d = -1
para (4,7):a·43+b·42+c·4+d = 7
Y así para todos los puntos
AplicacionesVersión matricial del sistema de ecuaciones:
−
−
=
5,36871
3
12,464,1708,741636216186451214166412481111
dcba
No existe solución para este sistema de ecuaciones (a no ser que la matrizsea singular)
En lugar de buscar “la” solución, buscamos la “mejor” solución posible, laque minimiza ||Ax-b||2 . è Solución en el sentido de “mínimos cuadrados”.
Este problema se puede resolver con las “ecuaciones normales”: ATAx=ATb; numéricamente es mejor utilizar la QR.
AplicacionesCalculamos en Matlab la QR
>> [Q,R]=qr(A)
Q =
-0.0018 -0.0620 0.5609 0.7647 -0.2769 0.1420-0.0142 -0.2094 0.6703 -0.2355 0.6068 -0.2880-0.1134 -0.5286 0.1279 -0.2898 -0.6458 -0.4363-0.9073 0.3573 0.1507 -0.1254 -0.0858 0.0575-0.3828 -0.4941 -0.4407 0.4623 0.3589 -0.2694-0.1313 -0.5487 0.0527 -0.2154 0.0427 0.7942
R =
-564.3138 -76.0356 -10.5902 -1.55070 -13.9558 -5.0058 -1.48550 0 1.1961 1.12180 0 0 0.36090 0 0 00 0 0 0
AplicacionesSe multiplica b por QT
>> b1=Q’*b
Y se resuelve el sistema triangular:
>> sol=R(1:4)\b1(1:4)
sol =
-0.12871.9760
-7.62488.3838
Obtenemos la gráfica del polinomio
)4()·3()·2()·1( 23 solxsolxsolxsol +++
=
dcb
a
Residuo= 8053.7)2758.6()6408.4( 22 =−+−
= [-9.8805 -1.8625 0.2852 3.0253 -4.6408 -6.2758]T
Descomposición QR
Deseamos obtener una nueva descomposición de una matriz A∈ℜ mxn , en la forma:
A=QRQ es una matriz ortogonal, y R es una matriz triangular
Puede utilizarse también para resolver sistemas de ecuaciones lineales generales
bQRxbQRxbAx T=⇔=⇔=
La descomposición QR se puede calcular independientemente de las dimensiones de A
INTRODUCCIÓN
A ∈ℜ∈ℜ mxn,mxn,
m>nm>n
Q∈ℜm×m R ∈ℜm×n
A ∈ℜ∈ℜ mxn,mxn,
m<nm<n
Q∈ℜm×m R ∈ℜm×n
0
0
La descomposición QR se puede calcular de muchas formas:
INTRODUCCIÓN
1) Basada en Reflexiones de Householder
2) Basada en Rotaciones de Givens
3) Basada en la ortonormalización modificada de Gram- Schmidt
4) Basada en rotaciones “rápidas” de Givens
Estudiaremos las dos principales
Sea v en ℜn distinto de 0. Las Reflexiones de Householderson matrices en ℜn×n de la forma:
1) Reflexiones de Householder
v·vv·v
IP T
T
2−=
1)Si y=Px, y se obtiene reflejando x sobre el subespacioRango{v}⊥ .(Complemento ortogonal de rango de v)
2) Cada P es una modificación de la identidad de rango 1 Simétrica y Ortogonal
Matriz de rango 1
Número
Utilización para hacer 0s en ciertas componentes de un vector:
2) Reflexiones de Householder
Sea x ∈ ℜn , queremos construir una matriz de HouseholderP tal que Px=α· e1 (Todas las componentes de Px son 0 excepto la primera).
Escogemos el vector v como: v=x ± ||x||2e1. Es fácilcomprobar que, construyendo P con este vector v, Px tienetodas sus componentes iguales a 0, excepto la primera.
Ejemplo:
3) Reflexiones de Householder
=
1513
x
=
1519
vTomamos
−−−−−−−−−−−−−
=−=
5351952954515539945927
5412
v·vv·v
IP t
t
−
=
0006
Px
12exxv +=
1) Como veremos a continuación, sólo se calcula el vector v y el factor β=(vtv)/2; en aplicaciones prácticas, NUNCA se calcula la matriz P.
2) En la fórmula v=x ± ||x||2e1, el signo se selecciona para minimizar el error de redondeo.
3) El vector v se puede normalizar para que v(1)=1; de esa forma, se puede almacenar la parte importante del vector v (v(2:n)) en la parte de x donde se han hecho los ceros (x(2:n)).En este caso
4) Reflexiones de HouseholderDetalles de implementación.
21112
2 1 ,/ ,/con ,** *u,uuuuvvuuuIP T ====−= ττ
2/11
2))(sgn( ∑−
=
=m
jiijjjj aaρ
Tjmjjjjjj aaav ],...,,,0,...,0,0[ ,1,1 −++= ρ
)( jjjjj a+= ρρβ
v=x +sg(x1) ||x||2e1β=(vtv)/2 = ||x||2(||x||2+x1)
Procedimiento Norm(j)
Construcción del algoritmo
Coste: 2(m-j) Flops
⇒
xxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxx
000
⇒
xxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
000
0000
Resultado de aplicar una Matriz de Householder, P, a otro vector y distinto del x que ha servido para calcularla
vyPy γ−= 2/)(y ))(/1( vvyv TT == ββγ
Procedimiento Fact(j,k)
ik
m
jiijjjk av∑
−
=
=1
)()/1( βγ
Procedimiento Cmod(j,k)
ijjkikik vaamjjiPara
)( 1,...,1,
γ−=−+=
Coste: 2(m-j) FlopsCoste: 2(m-j) Flops
Partimos de una matriz ejemplo 6*5
Descomposición QR basada en Householder(1)
=
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
A
Mediante una reflexión, hacemos ceros en la primera columna
=
xxxxxxxxxxxxxxxxxxxxxxxxx
A·H
00000
1
Luego repetimos el mismo proceso, con cada columna para hacerla triangular superior:
Descomposición QR basada en Householder(2)
=
xxxxxxxxxxxxxxxxxxxxxxxxx
A·H
00000
1
=
xxxxxxxxxxxxxxxxxxxxx
A·H·H
00000000
0
12 L
=
000000000
00000
0
12345
xxxxxxxxxxxxxxx
A·H·H·H·H·H
Descomposición QR basada en Householder(3)
=
000000000
00000
0
12345
xxxxxxxxxxxxxxx
A·H·H·H·H·H
RAQt =·
tQHHHHH =12345 ····
Hi ortogonales => Q ortogonal
QRA =
Q ortogonal
Paralelización del Algoritmo de Householder en el Modelo de Paso de Mensajes
Objetivo: Diseñar un algoritmo paralelo óptimo para triangularizar una matriz en un multicomputador
P0 P1 Pp-2 Pp-1
Reloj
Red de interconexión
Memoria local
Programa(0)
Datos(0)
Memoria local
Datos(1)
…
Programa(1)
Datos(p-2)
Memoria local
Programa(p-2)
Datos(p-1)
Memoria local
Programa(p-1)
Características:Entorno de paso de mensajes (MPI)Se conoce el tiempo de ejecución de 1 Flop (operación elemental
en coma flotante:+,-,*,:)Enviar un mensaje de N palabras desde un nodo a otro (o a otros)
tiene un coste de Nτ+β, con τ y β conocidos (τ=tw y β=ts)
CAsolCAp tttttt +≅−+≅
1)(,...,1,0, Columnas ocesador Pr
−=+→
→
pnrirpi
PjColumna jMODp
Distribución cíclica: suponiendo n=k*p
Idea básica del algoritmo
Para cada columna1. Calcular los parámetros de la
transformación de Householder (sólo el procesador que la contiene)
2. Difundir los parámetros al resto de procesadores
3. Actualizar las restantes columnas (cada procesador sólo las que contiene)
P0 P1 P2 P3
Red de interconexión
0 4 8 1 5 9 2 6 10 3 7 11
Algoritmo paralelo
EN PARALELO: PARA pr=0,1,…,p-1
En Ppr:
PARA j=0,1,…,n-1
SI jMODp=pr (*columna j pertenece a Ppr *)
ENTONCES
Norm(j)
Difunde parámetros (* vj, bj*)
EN OTRO CASO
Espera parámetros
FIN SI
PARA k=j,j+1,…,n-1
SI kMODp=pr (*columna k pertenece a Ppr *)
ENTONCES
Fact(j,k)
Cmod(j,k)
FIN SI
FIN PARA
FIN PARA
FIN PARA
Coste:
FlopsnmpntA )3/)(/2( 2 −=
[ ]DIFDIFC nnmnpt βτ +−= )2/( 2
Algoritmo sobre un anillo unidireccional
Algoritmo asíncrono, con solapamiento de comunicaciones y operaciones aritméticas
Algoritmo sobre un anillo unidireccional
Algoritmo síncrono (lock-step), sin solapamiento de comunicaciones y operaciones aritméticas
Algoritmo con distribución por bloques de columnas consecutivas
•Distribución cíclica: tiende a equilibrar la carga•Distribución por bloques de columnas consecutivas: tiende a disminuir el tiempo de comunicación
Otros aspectos del Algoritmo Paralelo
Actualización:
jjkkk AaAA *−=
= - jka *
Algoritmo general
PARA j=0,1,…,n-1CalculaParámetros(j)PARA k=j,j+1,…,n-1
ActualizarColumna(j,k)Eliminación Gaussiana
Parámetros=multiplicadores
Algoritmo paralelogeneral
EN PARALELO: PARA pr=0,1,…,p-1
En Ppr:
PARA j=0,1,…,n-1
SI jMODp=pr (*columna j pertenece a Ppr *)
ENTONCES
CalcularParámetros(j)
Difunde parámetros (* vj, bj*)
EN OTRO CASO
Espera parámetros
FIN SI
PARA k=j,j+1,…,n-1
SI kMODp=pr (*columna k pertenece a Ppr *)
ENTONCES
ActualizarColumna(j,k)
FIN SI
FIN PARA
FIN PARA
FIN PARA
Organización por bloques
=
44434241
34333231
24232221
14131211
)2(
aazzaazzaarzaarr
R
=
=2
1
42
32
41
31
21 101
ZZ
zz
zzz
Z
[ ]
=
−=−=
22
121121
2
121 t0
tcon ,
tTZZT
ZZ
IZTZIPP TTT
=
=2
1
44
34
24
14
41
31
23
13
AA
aaaa
aaaa
A
)2(2122221111 ;; RPPAzzIPzzIP TT =−=−= ττ
Organización por bloquesCaso de 2 columnas
))(()()( 21212122211121TTTT zzzzzzzzIPP ττττ +−−=
[ ] [ ]
[ ]
[ ]212221
1211
2222211212211111
2
1222112221111
2
12121
2
1
,tt
con zzZtt
T
zztzztzztzztI
zz
ztztztztI
zz
TzzIZZTZZ
I
TTTT
T
T
T
TTT
=
=
−−−−=
=
++−
=
−=
−
021 =⇒ t
Organización por bloques
=
2221
1211
AAAA
A
[ ]
)(
)()((
)()()(
2221212
2221211
22
12222121
2
1
22
12
22
1221
2
1
22
1221
++
−
=+
−
=
−=−=
=
AZAZTZ
AZAZTZAA
AZAZTZZ
AA
A
A
AZZT
Z
ZIZTZI
A
APPA
TTT
TTTTTT
TTTTTT
)2(2122221111 ;; RPPAzzIPzzIP TT =−=−= ττ
[ ]ARR =)2(
Organización por bloquesCaso general
[ ]
=
−=−=
kk
k
k
TTTr
t
ttttt
TZZTZZ
IZTZIPPP....
...
...
con ,... 222
11211
212
121
)2(21
22221111
...
;...;;
RPPPA
zzIPzzIPzzIP
k
Tkkkk
TT
=−=−=−= τττ
R1
Z(1))2(A
A(1) A(2)è
Organización por bloques)1()1()1()1( ,, : ar Householde derización triangulalaAplicar 1. TRZCalcularA
( ) )2()1()1()1()2()2( *** : Actualizar 2. AZTZIAA T−=
A(1) A(2)
R(1)
Z(1))2(A
Las operaciones de actualización se pueden hacer utilizando BLAS3 ya que son productos matrizXmatriz
Algoritmo de triangularización de Householder orientado por bloques
[ ] mxnnb
jMODpj
AAAA
PAtbnnb
ℜ∈=
→=
−110 ,...,,
, ,/
P0 P1 P2 P3 P0 P1 P2 P3
[ ]
finparafinpara
finsi
AZTZIAActualiza
prkMODpSinbjjkPara
finsi
TZEsperacasootroen
TZDifunde
TZcalculaAizaTriangularprjMODpSi
nbjPara
PEnpprPara
kT
jjjk
jj
jj
jjj
pr
1,...,2,1
,
,
, y
1,...,1,0
: 1,...,1,0
−=
=−++=
=−=
−=
Prestaciones del algoritmo
DIFDIFBLASp tbnn
mnFlopn
mntbFlopn
mp
ntb
T βτ
+−+
−+
−+= )
2(
22
3)
21
2( 3
2
Flopn
mp
pFlopn
mntb
dtbdTp
−
+
−
=⇒=
24
230
β
Rotaciones de Givens(1)
Muy similares a las rotaciones en ℜ2×2, pero en ℜn×n
1) Son ortogonales
2) Son modificaciones de la identidad de rango 2.
( )
−=θ
1000
00
00
0001
LLLMOMMM
LLL
MMOMMLLL
MMMOMLLL
cs
sc,k,iG ,donde c=cos(θ) y s=sen(θ)
Rotaciones de Givens(2)
Efecto de una rotación de Givens sobre un vector.
Eligiendo el ángulo θ apropiado, podremos hacer 0 en la componentei o en la k; por ejemplo, podemos hacer yk=0 tomando:
( )
+
−=
θ
n
ki
ki
n
k
i
x
x·cx·s
x·sx·c
x
x
x
x
x
x
x
,k,iG
M
M
M
M
M
M2
1
2
1
2222ki
k
ki
i
xx
xs;
xx
xc
+
−=
+=
Procedimiento de cálculo de rotaciones
;*;1/1;/
;*;1/1;/
1;1
0
2
2
tsctsaat
casootroen
tcstcaat
entonces
aaSi
casootroen
scentonces
aSi
pqrq
rqpq
rqpq
pq
=+==
=+==
<
==
=
CalculaRotacion(p,q,r)
Procedimiento de aplicación de rotacionesAplicaRotacion(p,q,r,k)
;**;**
;;u
vcusavsuca
ava
pk
rk
pk
rk
+−=+=
==
rqa
pqa
− xx
xxxxxx
xxxx
cssc
...pr
←←
q k
Rotaciones de Givens(3)Algoritmo para calcular una rotación de Givens, sin problemas de
overflow. Dados a y b, el algoritmo calcula c (=cos(θ)) y s (=sen(θ)) De forma que:
=
− 0
rba
cssc
T
Function [c,s]=givens(a,b)If b==0
c=1;s=0Else
If |b|>|a|
else
endend
τ=τ+
=−=τ sc;s;ba
21
1
τ=τ+
=−=τ cs;c;ab
21
1
El ángulo no se calcula nunca
Rotaciones de Givens(4)Efecto sobre una matriz
Efecto de una rotación de Givens sobre una matriz A ∈∈ ℜℜmm××nn por filas
1) Si G(i,k,θ) ∈∈ ℜℜmm××mm se aplica por la izquierda, de la forma:A ß G(i,k,θ)T·A, sólo se modifican las filas i y k de A, y requiere
exactamente 6n flops:
Function A=appl_givens_f(A,i,k,c,s)[m,n]=size(A)For j=1:n
t1=A(i,j)t2=A(k,j)A(i,j)=c*t1-s*t2A(k,j)=s*t1+c*t2
End
Rotaciones de Givens(5)Efecto sobre una matriz
Efecto de una rotación de Givens sobre una matriz A ∈∈ ℜℜmm××nn, , por columnas
1) Si G(i,k,θ) ∈∈ ℜℜnn××nn se aplica por la derecha, de la forma:A ß A·G(i,k,θ)T, sólo se modifican las columnas i y k de A, y requiere
exactamente 6m flops:
Function A=appl_givens_c(A,i,j,c,s)[m,n]=size(A)For j=1:m
t1=A(j,i)t2=A(j,k)A(j,i)=c*t1-s*t2A(j,k)=s*t1+c*t2
End
Rotaciones de Givens(6): Propiedades
1)Si, al aplicar una rotación de Givens por filas a un vector columna, loselementos de las filas afectadas son 0, el resultado será 0.
2) Las propiedades de error de las rotaciones de Givens son tan buenas como las de Householder.
Tomamos la misma matriz de ejemplo que en el caso de Householder, 6*5
=
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
A
Aplicamos una rotación a las filas 5 y 6, para hacer 0 el elemento (6,1)
→→
=
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AR ,
0
165
Descomposición QR basada en Givens(1)
=
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AR ,
0
165
A continuación, aplicamos una rotación a las filas 4 y 5, para hacer 0 el elemento (5,1)
→→
=
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
ARR ,,
00
165
154
Descomposición QR basada en Givens(2)
Se sigue con filas 3 y 4, luego 2 y 3, hasta 1 y 2:
→→
=
xxxxxxxxxxxxxxxxxxxxxxxxx
ARRR ,,,
00000
165
154
121 L
Se sigue con la columna 2, empezando desde abajo hasta la diagonal:
Descomposición QR basada en Givens(3)
→→
⇒
⇒
→→
⇒
=
xxxxxxxxxxxxxxxxxxxxx
ARR
xxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxx
xxxxxxxxxxxxxxxxx
ARRR
,,
,,,
00000000
0
000000
00000
165
222
165
154
121
L
LL
Las filas a las que se aplica la rotación se modifican, salvo en la Columna 1; los ceros permanecen (0·c+0·s=0)
Se repite el proceso con todas las columnas hasta la última.
Descomposición QR basada en Givens(4)
=
000000000
00000
0
165
154
565
xxx
xxxxxxxxxxxx
ARRR ,,, L
Obtenemos R=QT·A, donde QT es el producto de todas las rotaciones
Descomposición QR basada en Givens(5)Algoritmo “simplificado” para calcular la descomposición QR de una
matriz A ∈∈ ℜℜmm××n;n; La Q se obtiene explícitamente, normalmente solo se guardan los vectores v.
[Q,R]=qr_simpl_Giv(A)
1) Q=Im2) For j=1:n3) For i=m:-1:j+14) [c,s]=givens(A(i-1,j),A(i,j))5) A=appl_givens_f(A,i-1,i,c,s)6) Q=appl_givens_f(Q,i-1,i,c,s)7) End For8) End For
Coste: 3n2(m-n/3) flops
Estabilidad numérica del algoritmo
Las propiedades de error de las rotaciones de Givens son tan buenas como las de Householder.
Descomposición QR basada en Givens: Casos especiales
Reducción a la forma triangular superior de una matriz de Hessenberg superior
Reducción a la forma triangular superior de una matriz tridiagonal
Reducción a la forma triangular inferior de una matriz tridiagonal
→
xxxxxx
xxxx
xxxxxxxxx
xxxx
QT 1
2
3
Coste: 3n2 flops
→
xxxyxx
yxx
xxxxx
xxx
xx
QT 1
2
3
Coste: 25 flops
→
xxyxxy
xx
x
Q
xxxxx
xxx
xx
T
32
1
Coste: 25 flops
Paralelización del Algoritmo de Givens en el Modelo de Paso de Mensajes
Objetivo: Diseñar un algoritmo paralelo óptimo para diseñar un algoritmo paralelo óptimo para triangularizaruna matriz en un multicomputador utilizando Rotaciones de Givens
P0 P1 Pp-2 Pp-1
Reloj
Red de interconexión
Memoria local
Programa(0)
Datos(0)
Memoria local
Datos(1)
…
Programa(1)
Datos(p-2)
Memoria local
Programa(p-2)
Datos(p-1)
Memoria local
Programa(p-1)
Características:Entorno de paso de mensajes (MPI)Se conoce el tiempo de ejecución de 1 Flop (operación elemental
en coma flotante:+,-,*,:)Enviar un mensaje de N palabras desde un nodo a otro (o a otros)
tiene un coste de Nτ+β, con τ y β conocidos (τ=tw y β=ts)
CAsolCAp tttttt +≅−+≅
Paralelismo en las Rotaciones de GivensPara anular el elemento (p,q), los parámetros c,s sólo dependen de de dos elementos y la anulación sólo implica dos filas
Clases de paralelismo1. Calcular los parámetros de diferentes rotaciones (filas
disjuntas) en paralelo2. Aplicar simultáneamente rotaciones diferentes a pares de
filas disjuntas3. Aplicar en paralelo una rotación a todas las columnas en un
par de filas
1)(,...,1,0, Columnas ocesador Pr
−=+→
→
pnrirpi
PjColumna jMODp
Distribución cíclica: suponiendo n=k*p
Idea básica del algoritmo
Para cada columna1. Calcular los parámetros de las
rotaciones de Givens (sólo el procesador que la contiene)
2. Difundir los parámetros al resto de procesadores
3. Actualizar las restantes columnas (cada procesador sólo las que contiene)
P0 P1 P2 P3
Red de interconexión
0 4 8 1 5 9 2 6 10 3 7 11
Algoritmo orientado por columnas
Algoritmo paralelo de Givensorientado por columnas
EN PARALELO: PARA pr=0,1,…,p-1
En Ppr:
PARA j=0,1,…,n-1
PARA i=m-1,m-2,…,j+1
SI jMODp=pr (*columna j pertenece a Ppr *)
ENTONCES
[c,s]=givens(A,i-1,i)
Difunde parámetros c,s
EN OTRO CASO
Espera parámetros c,s
FIN SI
PARA k=j,j+1,…,n-1
SI kMODp=pr (*columna k pertenece a Ppr *)
ENTONCES
u=A(i-1,k);v=A(i,k);
A(i-1,k)=c*u+s*v;A(i,k)=-s*u+c*v
FIN SI
FIN PARA
FIN PARA
FIN PARA
FIN PARA
1)(,...,1,0, Columnas ocesador Pr
−=+→
→
pnrirpi
PjColumna jMODp
Distribución cíclica: suponiendo n=k*p
Idea básica del algoritmo
1. En paralelo, calcular los parámetros de las rotaciones de Givens que anulen elementos situados en una diagonal secundaria
2. Difundir los parámetros al resto de procesadores
3. En paralelo, actualizar las restantes columnas (cada procesador sólo las que contiene)
P0 P1 P2 P3
Red de interconexión
0 4 8 1 5 9 2 6 10 3 7 11
Algoritmo por columnas con optimización de las comunicaciones usando el modelo de paralelismo de las diagonales secundarias