Sie sind auf Seite 1von 23

Gradiente conjugado

MSc. Miguel Vargas-Flix


miguelvargas@cimat.mx
http://www.cimat.mx/~miguelvargas
07/09/11 1/23
Contenido
Contenido
Estructura de una matriz rala a partir de conectividades
Compressed Row/Column Storage
Algoritmo de gradiente conjugado
Gradiente conjugado precondicionado
Gradiente conjugado + precondicionador Jacobi
Algunos resultados de paralelizacin
!reguntas"
#ibliogra$%a
07/09/11 2/23
Compressed Row Storage
Compressed Row Storage
El m&todo Compressed ow Storage 'Saad() p)*+, en el cual se accesar-n las entradas de cada
rengln de la matriz A en secuencia.
(
/ 0 ( ( ( (
( ( 1 ) ( (
+ ( 1 ( 2 (
( 3 ) ( ( 1
( ( ( ( ( 4
)
/ 0
1 2
1 )
3 4
+ 1
1 3
2
5
3 )
2 3
1
6
4
6
V
)
=+5 15 2
J
)
=15 )5 4
Con este m&todo5 por cada rengln de la matriz se guardan dos arreglos. 6no conteniendo los
%ndices 7 otro los valores de los elementos de ese rengln cu7o valor sea di$erente a cero.
#uscar en un rengln una entrada con cierto %ndice de columna5 se tendr- un costo de b8s9ueda
del elemento de orden !( ") en el peor caso.
07/09/11 3/23
Compressed Row Storage
Multiplicacin matri!"#ector
!ra el caso de multiplicacin matriz:vector c=Ab el rden de b8s9ueda es !( 1)5 esto es por9ue
no se ;ace una b8s9ueda de las entradas del rengn5 se toman las entradas una tras otra.
Sea
#
i
el conjunto de entradas no cero del rengln i de A.
(
c
1
c
+
c
)
c
0
c
4
c
*
)
=
(
/ 0 ( ( ( (
( ( 1 ) ( (
+ ( 1 ( 2 (
( 3 ) ( ( 1
( ( ( ( ( 4
)
(
4
0
(
1
+
3
)
/ 0
1 2
1 )
3 4
+ 1
1 3
2
5
3 )
2 3
1
6
4
6
4
0
(
+
1
3
c
i
=

$=1
r
i
V
i
$
%
J
i
$ c
i
=

i=1
"
a
i &
%
&
c
1
c
+
c
)
c
4
c
0
c
*
<a ventaja de utilizar Compressed ow Storage es 9ue los datos de cada rengln de la matriz de
rigidez son accesados en secuencia uno tras otro5 esto producir- una ventaja de acceso al entrar el
blo9ue de memoria de cada rengln en el cache del C!6.
El c-lculo de cada
c
i
se ;ace de $orma independiente5 lo 9ue permite la paralelizacin.
07/09/11 4/23
$lgoritmo de gradiente con%ugado
$lgoritmo de gradiente con%ugado
Es un m&todo iterativo para minimizar $unciones cuadr-ticas conve=as de la $orma
' ( x)=
1
+
x
>
A xx
>
b
5
donde x ( b
"
7 A
""
es una matriz sim&trica positiva de$inida.

)esce"so de gradie"te *verde+( gradie"te co"&ugado *ro&o+
07/09/11 5/23
$lgoritmo de gradiente con%ugado
!ara minimizar ' ( x) calculamos primero su gradiente5
' ( x)=A xb.
#uscando igualar a cero el gradiente5 podemos ver el gradiente conjugado como un m&todo
iterativo para resolver s7stemas de ecuaciones lineales
Ax=b.
A partir de una matriz A sim&trica positiva de$inida5 podemos de$inir un producto interno como
x
>
A y= x ( y
A
.
A;ora5 decimos 9ue un vector x es conjugado a otro vector y con respecto a una matriz A si
x ( y
A
=(5 con xy.
<a idea del algoritmo es utilizar direcciones conjugadas para el descenso en la b8s9ueda del
punto ptimo x
?
'@oce(* p1(), 5 es decir
x
?
=o
1
p
1
+o
+
p
+
+.+o
"
p
"
5
los coe$icientes est-n dados a partir de la combinacin lineal
07/09/11 6/23
$lgoritmo de gradiente con%ugado
A x
?
=o
1
A p
1
+o
+
A p
+
+.+o
"
A p
"
=b5
con
o
$
=
p
$
>
b
p
$
>
A p
$
=

p
$
( b

p
$
( p
$

A
.
A partir de una matriz A de rango " slo se pueden de$inir " vectores A:conjugados5 por lo tanto
el algoritmo de gradiente conjugado garantiza la obtencin de una solucin en un m-=imo de "
iteraciones.
Ae la $rmula de actualizacin
x
$ + 1
=x
$
+ p
$
5
tomando p como una direccin de descenso.
07/09/11 7/23
$lgoritmo de gradiente con%ugado
Ae$inamos
g
$
= '
(
x
$
)5
el tamaBo de paso o 9ue minimiza la $uncin ' ( x) a lo largo de la direccin
x
$
+o p
$
es
o
$
=
g
$
>
p
$
p
$
>
A p
$
.
Si de$inimos
p
$+1
como la direccin m-s cercana al gradiente
g
$
bajo la restriccin de ser
conjugado. Esta direccin est- dada por la pro7eccin de
g
$
en el espacio ortogonal a
p
$
con
respecto al producto interno inducido por A5 as%
p
$+1
=g
$
+
p
$
>
A g
$
p
$
>
A p
$
p
$
.
07/09/11 &/23
$lgoritmo de gradiente con%ugado
El algoritmo es el siguienteC
x
(
5 coordenada inicial
g
(
- Ax
(
b
5 gradiente inicial
p
(
- g
(
5 direccin inicial de descenso
t5 tolerancia
$ - (
mientras
g
$
0
5 es decir
$ranD( A)

g
$

>t
o
$
-
g
$
>
p
$
p
$
>
A p
$
x
$+1
- x
$
+o
$
p
$
g
$+1
- Ax
$+1
b

$
-
g
$+1
>
A p
$
p
$
>
A p
$
p
$+1
- g
$+1
+
$+1
p
$
$ - $+1
,lgoritmo de gradie"te co"&ugado
Generalmente no es necesario realizar las " iteraciones5 se puede de$inir la precisin deseada
limitando la convergencia con una tolerancia t.
07/09/11 9/23
$lgoritmo de gradiente con%ugado
El algoritmo de gradiente conjugado mejorado es el siguiente '@oce(* p11+,C
x
(
5 coordenada inicial
g
(
- Ax
(
b
5 gradiente inicial
p
(
- g
(
5 direccin inicial de descenso
t5 tolerancia
$ - (
mientras
g
$
0
5 es decir
$ranD ( A)

g
$

>t
w - A p
$

$

g
$
>
g
$
p
$
>
w
x
$+1
- x
$
+o
$
p
$
g
$ + 1
g
$
+ w

$
-
g
$+1
>
g
$+1
g
$
>
g
$
p
$+1
- g
$+1
+
$+1
p
$
$ - $+1
Es $-cilmente paralelizable utilizando memoria compartida5 dado 9ue el proceso m-s lento del
algoritmo es una multiplicacin matriz vector.
07/09/11 10/23
$lgoritmo de gradiente con%ugado
'araleli!acin del algoritmo
x
(
5 coordenada inicial
g
(
- A x
(
b
5 gradiente inicial
p
(
- g
(
5 direccin inicial de descenso
t
5 tolerancia
" dim( x)
$ - (
mientras
g
$
0
5 es decir
$ranD ( A)

g
$

>t
- - (
5 guardar- p
$
>
w
g - (
5 guardar- g
$
>
g
$
paralelizar para
i - 1."
( w)
i
- (
para
& - 1."
( w)
i
( w)
i
+ ( A)
i &
(
p
$
)
&
fin_para
- -+
(
p
$
)
i
(w)
i
g g+
(
g
$
)
i
(
g
$
)
i
fin_para

$

g
-
h - (
5 guardar- g
$+1
>
g
$+1
paralelizar para
i - 1."
(
x
$+1
)
i
-
(
x
$
)
i
+o
$
(
p
$
)
i
(
g
$+1
)
i
-
(
g
$
)
i
+o
$
( w)
i
h - h+
(
g
$+1
)
i
(
g
$+1
)
i
fin_para

$
-
h
g
paralelizar para
i - 1."
(
p
$+1
)
i
-
(
g
$+1
)
i
+
$+1
(
p
$
)
i
fin_para
$ - $+1
fin_mientras
07/09/11 11/23
$lgoritmo de gradiente con%ugado
Se ;an agrupado las operaciones algebraicas de cada iteracin en tres ciclos5 9uedando slo dos
puntos de sincronizacin5 uno para calcular
o
$
7 otro para

$
.
Esto es importante5 dado 9ue crear 7 destru%r threads es costoso.
Es posible reordenar el algoritmo para disminuir a8n m-s los puntos de sincronizacin 'AAze3),
manteniendo la estabilidad num&rica.
07/09/11 12/23
$lgoritmo de gradiente con%ugado
Vector<T> G(rows); // Gradient
Vector<T> P(rows); // Descent direcction
Vector<T> W(rows); // A*P
omp_set_num_threads(threads);
T gg = 0.0;
#pragma omp parallel for default(shared) \
reduction(+:gg) schedule(guided)
for (int i = ; i <= rows; !!i)
"
T sum = 0.0;
int #m = $.%ow&i'e(i);
for (register int # = 0; # < #m; !!#)
"
sum != $.(ntr)(i* #)+,($.-nde.(i* #));
/
G(i) = sum 0 1(i); // G = AX - Y
P(i) = 0G(i); // P = -G
gg != G(i)+G(i); // gg = G'*G
/
T epsi2on = to2erance+to2erance;
int step = 0;
while (step < ma._steps)
"
// Test termination condition
if (gg <= epsi2on) 33 4orm(Gn) <= to2erance
"
break;
/
T pw = 0.0;
#pragma omp parallel for default(shared) \
reduction(+:pw) schedule(guided)
for (int i = ; i <= rows; !!i)
"
T sum = 0.0;
int #m = $.%ow&i'e(i);
for (register int # = 0; # < #m; !!#)
"
sum != $.(ntr)(i* #)+P($.-nde.(i* #));
/
W(i) = sum; // W = AP
pw != P(i)+W(i); // pw = P'*W
/
T a2pha = gg3pw; // alpha = (G'*G/(P'*W
T gngn = 0.0;
#pragma omp parallel for default(shared) \
reduction(+:gngn)
for (int i = ; i <= rows; !!i)
"
,(i) != a2pha+P(i); // Xn = X ! alpha*P
G(i) != a2pha+W(i); // Gn = G ! alpha*W
gngn != G(i)+G(i); // gngn = Gn'*Gn
/
T 5eta = gngn3gg; // "eta = (Gn'*Gn/(G'*G
#pragma omp parallel for default(shared)
for (int i = ; i <= rows; !!i)
"
P(i) = 5eta+P(i) 0 G(i); // Pn = -G ! "eta*P
/
gg = gngn;
!!step;
/
Secci." de c.digo e" C// del algoritmo de gradie"te co"&ugado e" paralelo
07/09/11 13/23
(radiente con%ugado precondicionado
(radiente con%ugado precondicionado
El n8mero de condicin x de una matriz A
""
no singular5 para una norma est- dado por
x( A)=AA
1
.
!ara la norma
+
5
x
+
( A)=A
+
A
1

+
=
u
max
( A)
u
mi"
( A)
5
donde u son los valores singulares de la matriz.
!ara una matriz A sim&trica positiva de$inida5
x( A)=
\
max
( A)
\
mi"
( A)
5
donde \ son los eigenvalores de A.
07/09/11 14/23
(radiente con%ugado precondicionado
6n sistema de ecuaciones Ax=b es considerado bien condicionado si un pe9ueBo cambio en
los valores de A o un pe9ueBo cambio en b resulta en un pe9ueBo cambio en x.
6n sistema de ecuaciones Ax=b es considerado mal condicionado si un pe9ueBo cambio en los
valores de A o un pe9ueBo cambio en b resulta en un cambio grande en x.
As%5 matrices con un n8mero de condicin cercano a 1 se dicen 9ue est-n bien condicionadas.
Al reducir el n8mero de condicin el precondicionador acelera la velocidad de convergencia del
m&todo de gradiente conjugado.
07/09/11 15/23
(radiente con%ugado precondicionado
Entonces5 en vez de resolver el problema
Axb=(5
se resuelve el problema
M
1
( Axb)=(.
Al igual 9ue la matriz A5 el precondicionador M tiene 9ue ser sim&trico positivo de$inido.
!arece entonces 9ue es costoso calcular M
1
5 en general se utilizan precondicionadores con
inversas $-ciles de calcular o precondicionadores 9ue se puedan $actorizar con C;olesD7.
Al usar C;olesD75 se $actoriza el precondicionador una vez 7 en cada iteracin del gradiente
conjugado se resuelve el sistema de ecuaciones por sustitucin ;acia adelante 7 ;acia atr-s sin
tener 9ue calcular la inversa.
07/09/11 16/23
(radiente con%ugado precondicionado
El algoritmo es el siguienteC
x
(
5 coordenada inicial
g
(
- Ax
(
b
5 gradiente inicial
q
(
- M
1
g
(
p
(
- q
(
5 direccin inicial de descenso
t5 tolerancia
$ - (
mientras
g
$
0
5 es decir
$ranD ( A)

g
$

>t
w - A p
$

$

g
$
>
q
$
p
$
>
w
x
$+1
- x
$
+o
$
p
$
g
$+1
- g
$
+ow
q
$+1
- M
1
g

$
-
g
$+1
>
q
$+1
g
$
>
q
$
p
$+1
- q
$+1
+
$+1
p
$
$ - $+1
,lgoritmo de gradie"te co"&ugado preco"dicio"ado
07/09/11 17/23
(radiente con%ugado ) precondicionador *aco+i
(radiente con%ugado ) precondicionador *aco+i
El precondicionador Jacobi es el m-s sencillo5 consiste en ;acer
M=diag ( A)5
de esta $orma el precondicionador es una matriz diagonal5 cu7a inversa es $-cil de calcular
( M
1
)
i &
=

1
A
i i
si i= &
( si i &
.
@o se almacena todo M
1
5 slo la diagonal.
Al ser tan sencillo el precondicionador sigue siendo $-cil de paralelizar el gradiente conjugado.
07/09/11 1&/23
(radiente con%ugado ) precondicionador *aco+i
El algoritmo es el siguienteC
x
(
5 coordenada inicial
g
(
- Ax
(
b
5 gradiente inicial
q
(
- (diag A)
1
g
(
p
(
- q
(
5 direccin inicial de descenso
t5 tolerancia
$ - (
mientras
g
$
0
5 es decir
$ranD ( A)

g
$

>t
w - A p
$

$

g
$
>
q
$
p
$
>
w
x
$+1
- x
$
+o
$
p
$
g
$+1
- g
$
+ow
q
$+1
- ( diag A)
1
g

$
-
g
$+1
>
q
$+1
g
$
>
q
$
p
$+1
- q
$+1
+
$+1
p
$
$ - $+1
07/09/11 19/23
$lgunos resultados de paraleli!acin
$lgunos resultados de paraleli!acin
El siguiente ejemplo muestra la resolucin de un sistema de 1E1045(++ ecuaciones. Se utiliz una
computadora Fac!ro 0 con oc;o procesadores Gntel Heon a +.+*GIz5 con ;7pert;reading
;abilitado Jes decir 1* C!6sK. <a gr-$ica ).1 muestra los el tiempo 9ue el programa tard en
resolver el problema paralelizando con una cantidad di$erente de C!6s en cada una de las 1*
pruebas. <a primer prueba $ue con un C!65 la segunda con dos5 7 as% sucesivamente.
1 2 3 4 5 6 7 & 9 10 11 12 13 14 15 16
0,00
5,00
10,00
15,00
20,00
25,00
-iempo real .m/
-iempo ideal .m/
'rocesadores
-
i
e
m
p
o

.
m
/
07/09/11 20/23
$lgunos resultados de paraleli!acin
Sea
t
1
el tiempo 9ue tard el resolverse el problema con un C!65 entonces5 en la gr-$ica anterior
el tiempo ideal es
t
1
/ "
5 done " es el n8mero de procesadores utilizado. !odemos dar una medida
de e$iciencia 0 del algoritmo
0
"
=
t
1
"t
"
.
1 2 3 4 5 6 7 & 9 10 11 12 13 14 15 16
0,00
0,10
0,20
0,30
0,40
0,50
0,60
0,70
0,&0
0,90
1,00
'rocesadores
0
1
i
c
i
e
n
c
i
a
<a e$iciencia de la paralelizacin disminu7e con$orme se aumenta el n8mero de C!6s. Esto es
debido a 9ue se crea un cuello de botella cuando m-s de un C!6 trata de accesar a la memor%a
RAF de $orma simult-nea5 lo cual es inevitable para este tipo de ar9uitecturas.
07/09/11 21/23
2'reguntas3
2'reguntas3
07/09/11 22/23
4i+liogra15a
4i+liogra15a
'AAze3), E. L. AEAzevedo5 M. <. EijD;out5 C. I. Romine. Conjugate Gradient Algorit;ms wit;
Reduced S7nc;ronization Nver;ead on Aistributed Femor7 Fultiprocessors. <apacD OorDing
@ote 4*. 133).
'@oce(*, J. @ocedal5 S. J. Orig;t. @umerical Nptimization5 Springer5 +((*.
'!iss/0, S. !issanetzD7. Sparse Fatri= >ec;nolog7. Academic !ress5 13/0.
'Saad(), P. Saad. Gterative Fet;ods $or Sparse <inear S7stems. SGAF5 +(().
07/09/11 23/23

Das könnte Ihnen auch gefallen