Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
I
n
t
e
l
5
6
5
6
(
%
6
6
B
i
p
s
M
o
t
o
r
o
l
a
,
5
6
6
6
(
&
M
i
p
s
I
n
t
e
l
5
6
C
'
5
,
(
*
M
i
p
s
I
n
t
e
l
5
6
C
)
5
,
(
&
&
M
i
p
s
M
o
t
o
r
o
l
a
,
5
6
*
6
(
*
*
M
i
p
s
I
n
t
e
l
5
6
C
*
5
,
(
%
*
M
i
p
s
M
o
t
o
r
o
l
a
,
5
6
,
6
(
5
5
M
i
p
s
I
n
t
e
l
7
e
n
t
i
u
m
7
r
o
(
%
*
&
M
i
p
s
I
n
t
e
l
7
e
n
t
i
u
m
I
I
I
(
&
.
*
$
i
p
s
A
M
(
A
t
2
l
o
n
D
7
(
%
.
:
$
i
p
s
I
n
t
e
l
7
e
n
t
i
u
m
I
<
(
:
.
3
$
i
p
s
7
l
a
y
-
t
a
t
i
o
n
)
C
e
l
l
(
&
6
$
i
p
s
I
n
t
e
l
C
o
r
e
'
(
*
:
$
i
p
s
I
n
t
e
l
C
o
r
e
i
3
(
3
,
$
i
p
s
A
M
(
7
2
e
n
o
m
I
I
D
*
(
*
)
$
i
p
s
"
E
m
e
r
o
d
e
i
n
s
t
r
u
c
c
i
o
n
e
s
p
o
r
s
e
g
u
n
d
o
#igura .. Evolucin de la capacidad de los procesadores en instrucciones por segundo &ips'.
Este incremento no solo se de+e al desarrollo de la tecnolog2a con la 6ue se 0a+rican los procesadores*
sino al 3ec3o de 6ue a3ora se 0a+rican procesadores con %arios nHcleos# Por e)emplo el procesador 8ntel
Core i?@CB-N tiene J nHcleos# Gos sistemas operati%os 5 compiladores modernos apro%ec3an esta
caracter2stica para e)ecutar sus rutinas en paralelo# El estndar ms utilizado para procesadores multi@core
es >penMP KC3ap-BL#
>tro a%ance importante en los Hltimos aFos es 6ue el uso de clusters de computadoras se 3a 3ec3o
accesi+le# En particular los clusters &eo4ul0 K$terCIL* son implementados con computadoras comerciales
6ue son interconectadas por medio de una red local :0igura .#,;* las computadoras 0uncionan e)ecutando
sistemas operati%os li+res :(/UMGinux* Free&$"* etc#; 5 se programan utilizando li+rer2as 6ue permiten
la comunicacin entre los programas de clculo numrico# Ga li+rer2a ms utilizada para desarrollar
aplicaciones en paralelo en clusters &eo4ul0 es la inter0ace de pase de mensa)es MP8 :del ingls*
(essage )assing *nterface' KMP8F-BL* sta permite implementar con 0acilidad programas 6ue se e)ecuten
+a)o el es6uema de memoria distri+uida#
&)
&. Introduccin
C
o
m
p
u
t
a
d
o
r
a
s
n
o
d
o
s
e
s
c
a
l
v
o
Computadora
nodo maestro
Switch
de red
Red
eCterna
#igura .+. ,onfiguracin t"pica de un cluster -eowulf.
El tra+a)o de esta tesis implic el desarrollo de un programa de so0t4are para resol%er pro+lemas de
elemento 0inito utilizando cmputo en paralelo# Para la implementacin 5 prue+a de este programa se
utiliz el cluster de cmputo del C8M9* el cual sigue el modelo M8M"# Cuenta con A- computadoras
multi@core* las cuales pro%een un total de .C, procesadores* los cuales son accesados a tra%s de un nodo
maestro# Ostas tienen instalado el sistema operati%o (/UMGinux* la suite de compiladores (/UM(CC 5 la
li+rer2a de MP8 >penMP8##
&.%. +as matemticas del paralelismo
1a5 muc3as operaciones matemticas +sicas 6ue pueden paralelizarse* esto signi0ica 6ue pueden
separarse en %arias su+@operaciones 6ue puede realizarse de 0orma independiente# Por e)emplo* el la suma
de dos %ectores x* y para producir otro %ector c*
c
i
=!
i
+$
i
* i =.*., .#
En este caso las . sumas pueden realizarse simultneamente* asignando una a cada procesador# Go 6ue
3a5 6ue resaltar es 6ue no 3a5 dependencia entre los di0erentes pares de datos* tenemos entonces el
paralelismo ms e0iciente#
1a5 operaciones 6ue presentan ma5or di0icultad para paralelizarse* por e)emplo el producto punto x , y
a=
i=.
.
!
i
$
i
*
donde a es un escalar* una primera aproximacin ser2a %erlo como una secuencia de sumas de productos
6ue re6uieren ir acumulando un resultado* al %erlo as2 no es una operacin paraleliza+le# $in em+argo*
podemos reorganizar el proceso como se muestra en la 0igura .#A#
&*
&. Introduccin
!
.
$
.
!
,
$
,
!
A
$
A
!
D
$
D
!
.
$
.
+ + +
+
+
a
#igura ./. )aralelizacin del producto punto.
En este caso se tiene una paralelizacin e0iciente de la multiplicacin de las entradas de los %ectores*
despus se %a reduciendo la e0iciencia* el primer grupo se sumas es realizado por . / , procesadores* las
segundas sumas por . / D procesadores* 3asta llegar a la suma 0inal en un procesador* el 6ue o+tiene el
resultado 0inal a# En este tipo de paralelizacin existe dependencia entre los datos 5 ello pro%oca 6ue sea
menos e0iciente# Muc3os algoritmos seriales re6uieren* para ser paralelizados* de re@ordenar las
operaciones con una estrategia de di%ide 5 %encers* como en el caso del producto punto# Usualmente
se tendrn memos procesadores 6ue el tamaFo del %ector* por lo 6ue se asignan %arias operaciones de un
grupo a cada procesador* las cuales se e)ecutarn en secuencia* lo 6ue reduce aHn ms la e0iciencia del
paralelismo#
&.,. -obre el estado del arte
Ga teor2a de descomposicin de dominios para resol%er pro+lemas de ecuaciones di0erenciales parciales
es un tema en constante desarrollo# En aFos recientes 3a sido +ene0iciado por la creacin de sistemas de
cmputo cada %ez ms %eloces* con ma5or capacidad de memoria 5 %elocidad de comunicacin entre
nodos# Ga tendencia iniciada en la dcada de los aFos no%enta 3a sido tra+a)ar al mismo tiempo con las
soluciones indi%iduales de cada particion 5 de 0orma general con un su+dominio grueso de todo el
pro+lema#
En el caso del tra+a)o con pro+lemas de elemento 0inito en mecnica de slidos en rgimen lineal se
presentan matrices simtricas positi%as de0inidas* %arios de los mtodos ms modernos para resol%er este
tipo de pro+lemas usan descomposicin de dominios sin traslape* por ello %amos a 3a+lar de stos en las
siguientes secciones* aun6ue mu5 +re%emente# Para esta tesis* sin em+argo* elegimos tra+a)ar usando el
mtodo de descomposicin de dominios con traslape* el cual ser descrito en el cap2tulo D#
&.,.&. (iscreti.acin con el m/todo de elementos 0initos
Una tcnica mu5 utilizada para resol%er numricamente pro+lemas de ecuaciones di0renciales parciales es
el mtodo de elementos 0initos# El mtodo consiste en discretizar un dominio di%idindolo en elementos
geomtricos 6ue aproximadamente cu+ran al dominio# $e genera as2 una malla de elementos* los cuales
&%
&. Introduccin
comparten aristas 5 nodos* 0igura .#D# Gas relaciones entre nodos corresponden a entradas en una matriz#
s2* la relacin entre los nodos i 5 0 e6ui%ale a un %alor en la entrada
a
i 0
en una matriz A# "ado 6ue
existe una relacin del nodo i al nodo 0* tam+in existe una relacin :no necesariamente con el mismo
%alor; del nodo 0 al nodo i* lo 6ue producir una matriz con estructura simtrica* aun6ue no
necesariamente simtrica en cuanto a sus %alores :en las secciones siguientes se tratan slo pro+lemas con
matrices simtricas tanto en estructura como en %alores;# dems* en la diagonal aparecen entradas 6ue
representan a los nodos#
i
0
D
D
A=
(
1 1 1 1 1 1 1 1
1 a
i i
1 a
0 i
1 1 1 1
1 1 1 1 1 1 1 1
1 a
i 0
1 a
0 0
1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
)
#igura .2. 3iscretizacin de un dominio D.
9endremos entonces la representacin del pro+lema de ecuaciones di0erenciales parciales como un
sistema de ecuaciones
A x=b*
x=c en D
con ciertas condiciones :"iric3let o /eumann; en la 0rontera D# En el cap2tulo , 0ormularemos
pro+lema de de0ormacin lineal de slidos utilizando este mtodo#
&.,.'. (escomposicin de dominios
Ga descomposicin de dominios nace de la necesidad de tra+a)ar ecuaciones di0erenciales en dominios
discretizados 6ue producen sistemas de ecuaciones grandes* tratando de resol%erlos de 0orma e0iciente# En
0orma general podemos decir 6ue existen dos tipos de descomposicin de dominios* utilizando particiones
sin traslape o con traslape* 0igura .#I#
D
,
D
.
D
,
D
.
#igura .4. 3escomposicin en dominios sin traslape &iz5uierda' $ con traslape &derecha'.
&,
&. Introduccin
"i%idir un dominio en ) particiones e6ui%ale entonces a separar en ) +lo6ues la matriz A 6ue representa
las relaciones entre nodos# Cada dominio entonces estar representado por una matriz A
( p)
* con p=..)#
El siguiente paso es resol%er el sistema de ecuaciones con la matriz A
( p)
de cada particin de 0oma
independiente* utilizando algHn mtodo con%encional para resol%er sistemas de ecuaciones# Ga soluciones
o+tenidas se intercam+iarn con las particiones ad5acentes 5 as2* de 0orma iterati%a* se ir aproximando la
solucin glo+al del sistema#
&.,.). (ominios sin traslape1 complemento de -c2ur
En dominios sin traslape*
D=D
.
D
,
*
D
.
D
,
=
*
I=D
.
D
,
*
dos particiones ad5acentes tendrn nodos en comHn en la 0rontera I* lo 6ue e6ui%aldr a entradas iguales
en sus respecti%as matrices# Podemos entonces 0ormar la matriz A como
A=
(
A
* *
(.)
0 A
* I
(.)
0 A
* *
( ,)
A
* I
( ,)
A
I *
( .)
A
I *
( ,)
A
I I
)
*
x=
(
x
*
( .)
x
*
( ,)
x
I
)
*
b=
(
b
*
( .)
b
*
( ,)
b
I
)
# :.#.;
Para cada paticin p tendremos entonces
A
( p)
=
(
A
* *
( p)
A
* I
( p)
A
I *
( p)
A
I I
( p)
)
*
x
( p)
=
(
x
*
( p)
x
I
( p)
)
*
b
( p)
=
(
b
*
( p)
b
I
( p)
)
* con p=..)# :.#,;
Una estrategia para resol%er este tipo de pro+lemas es utilizar el sistema de complementos de $c3ur
K9ose-I pp.@?L# Parte de eliminar las incgnitas x
*
( p)
en el interior de la particin* esto corresponde a la
0actorizacin de la matriz de :.#.; como
A=L R=
(
I 0 0
0 I 0
A
I *
(.)
A
* *
( .) .
A
I *
( ,)
A
* *
( ,) .
I
)(
A
* *
( .)
0 A
* I
( .)
0 A
* *
( ,)
A
* I
( ,)
0 0 S
)
*
5 un sistema lineal resultante
(
A
* *
(.)
0 A
* I
( .)
0 A
* *
( ,)
A
* I
( ,)
0 0 S
)
x=
(
b
*
( .)
b
*
( ,)
g
I
)
*
a6u2
S=A
I I
A
I *
( .)
(
A
* *
( .)
)
.
A
* I
( .)
A
I *
( ,)
(
A
* *
( ,)
)
.
A
* I
( ,)
*
es el complemento de $c3ur relati%o a las incgnitas en I# comodando como en :.#,;* podemos escri+ir
el complemento de $c3ur local
S
( p)
=A
I I
( p)
A
I *
( p)
(
A
* *
( p)
)
.
A
* I
( p)
* con p=..)*
encontraremos el complemento de $c3ur para
x
I
con
S x
I
=g
I
* :.#A;
con
&3
&. Introduccin
S=S
( .)
+S
( ,)
*
g
I
=( b
I
( .)
A
I *
( .)
( A
* *
( .)
)
.
b
*
( .)
)+(b
I
( ,)
A
I *
( ,)
( A
* *
(,)
)
.
b
*
( ,)
)=g
I
( .)
+g
I
( .)
#
El mtodo de complementos de $3ur consiste entonces en encontrar primero la solucin en la 0rontera
comHn
x
I
resol%iendo :.#A; 5 despus aplicar sta como condicin de "iric3let para encontrar las
incgnitas dentro de los dominios con
x
*
( p)
=
(
A
* *
( p)
)
.
(
b
*
( p)
A
* I
( p)
x
I)
#
$i partimos de una condicin de /eumann en la 0rontera comHn I*
\
I
=\
I
(.)
=\
I
( ,)
* :.#D;
resol%emos los sistemas locales de /eumann para encontrar x
(.)
5 x
(,)
*
(
A
* *
( p)
A
* I
( p)
A
I *
( p)
A
II
( p)
)(
x
*
( p)
x
I
( p)
)
=
(
b
*
( p)
b
I
( p)
+\
I
( p)
)
* con p=..)#
Usando la 0actorizacin en +lo6ues de las matrices locales* encontramos
x
I
( p)
=( S
( p)
)
.
( g
I
( p)
\
I
( p)
)
*
a3ora podemos encontrar
\
I
usando
F \
I
=d
I
* :.#I;
con
F=( S
(.)
)
.
+( S
( ,)
)
.
*
d
I
=d
I
( .)
+d
I
( ,)
=( S
( .)
)
.
g
I
( .)
+( S
( ,)
)
.
g
I
( ,)
#
&.,.*. M/todos "eumann4"eumann
$e les conoce como mtodos /eumann@/euman K9ose-I pp.-@.,L por6ue se resuel%e un pro+lema
/eumann a cada lado de la inter0az entre los su+dominios#
El primer paso para resol%er el algoritmo /eumann@/eumann es resol%er el pro+lema con condiciones
"iric3let en cada domino
D
p
* con %alores !
I
-
en I* despus en cada su+dominio resol%er un pro+lema
/eumann* con %alores escogidos como la di0erencia en las deri%adas normales de la solucin de dos
pro+lemas "iric3let# Gos %alores en I de las soluciones de estos pro+lemas /eumann son utilizados para
corregir la aproximacin inicial !
I
-
5 o+tener !
I
.
# Para dos partciones* podemos descri+ir el mtodo
utilizando operadores di0erenciales* as2* para n-*
&5
&. Introduccin
Pro+lema "iric3let 3
p
A!
p
n+./ ,
=b en D
p
!
p
n+./,
=- so+re D
p
I
!
p
n+./ ,
=!
I
n
en I
* p=.* ,*
Pro+lema /eumann .
p
A
p
n+.
=- en D
p
p
n+.
=- so+re D
p
I
p
n
i
n+.
=
!
.
n
.
n+./ ,
+
!
,
n
,
n+./ ,
en I
* p=.* ,#
Para la siguiente iteracin usaremos
!
I
n+.
=!
I
n
0(
.
n+.
+
,
n+.
) en I*
con un
0
(
-* 0
max
) elegido de 0orma adecuada#
Para mostrar en este procedimiento 0orma matricial intoduciremos los %ectores internos de grados e
li+ertad v
p
=x
*
( p)
5 w
p
=
*
( p)
* as2
Pro+lema "iric3let 3
p
A
* *
( p)
v
p
n+./,
+A
* I
( p)
x
I
n
=b
*
( p)
* p=.* ,* :.#J;
Pro+lema /eumann .
p
(
A
* *
( p)
A
* I
( p)
A
I *
( p)
A
I I
( p)
)(
w
p
n+./,
j
p
n+./ ,
)
=
(
0
r
I
)
* p=.* ,* :.#?;
x
I
n+.
=x
I
n
0
(
j
.
n+.
+j
,
n+.
)*
donde el residual
r
I
se de0ine como
r
I
=
(
A
I *
( .)
v
.
n+./,
+A
I I
( .)
x
I
n
b
I
( .)
)
+
(
A
I *
( ,)
v
,
n+./ ,
+A
II
(,)
x
I
n
b
I
( ,)
)#
continuacin eliminamos v
p
n+./ ,
* w
p
n+./,
de :.#J; 5 :.#?;# partir del pro+lema "iric3let
3
p
*
r
I
=( g
I
S x
I
n
)*
6ue indica 6ue la di0erencia r
I
es igual al negati%o del residual del complemento de $c3ur para el sistema
:.#I;# Usamos la 0actorizacin por +lo6ues de las matrices locales A
( p)
* los pro+lemas de /euman
.
p
dan
j
p
n+.
=( S
( p)
r
I
)
.
=( S
( p)
r
I
)
.
( g
I
S x
I
n
)
#
Finalmente encontramos
x
I
n+.
x
I
n
=0(( S
.
(.)
)
.
+( S
( ,)
)
.
) ( g
I
S x
I
n
)#
El precondicionador para el sistema :.#I; ser2a
S F=|( S
(.)
)
.
+( S
( ,)
)
.
S=|( S
( .)
)
.
+( S
( ,)
)
.
( S
(.)
+S
( ,)
)
#
9omando como +ase el algoritmo /eumann@/eumann* se 3a desarrollado el mtodo &"" :en ingls*
&alancing 3omain 3ecomposition;* la 0ormulacin de ste se puede encontrar en KMandCAL# Gos mtodos
&"" son algoritmos iterati%os 6ue tra+a)an con su+estructuras* es decir* mtodos donde los grados de
li+ertad interiores de cada una de las particiones sin traslape son eliminados# En cada iteracin se
resuel%en los pro+lemas locales de cada particin 5 se com+inan las soluciones con un pro+lema en una
malla ms gruesa creata a partir del su+dominio del espacio nulo# En las 0ornteras comunes se esta+lecen
condiciones /eumann#
&:
&. Introduccin
Una de las estratgias ms recientes para resol%er pro+lemas de descomposicin de dominios para
pro+lemas de elemento 0inito de de0ormacin elstica de slidos 6ue producen matrices simtricas
positi%as de0inidas es el mtodo de +alance de descomposicin de dominios por restricciones* &""C :en
ingls* &alancing 3omain 3ecomposition b$ ,onstraints; KMand-,L 5 K"o3r-AL# El pro+lema se resuel%e
utilizando 0ormulando un espacio grueso :coarse space; el cual consiste de 0uciones de minimizacin de
energ2a con los grados de li+ertad dados en la malla gruesa* una descripcin condensada puede
encontrarse en KPidl-BL#
'ecientemente se 3an desarrollado algoritmos +asados en &"" 0ormulados con su+dominios con
traslape* la descripcin de estos puede consultarse en KQimn-JaL 5 KQimn-J+L#
&.,.%. M/todos (iric2let4(iric2let
El caso dual al algoritmo /eumann@/euman es el algoritmo con condiciones "iric3let a am+os lados de
la inter0az comHn de los su+dominios K9ose-I pp.,@.DL# $i comenzamos con una aproximacin inicial \
I
-
en I* como en :.#D;* podemos resol%er inicialmente pro+lemas con condiciones /eumann* en cada
D
p
#
"espus resol%eremos un pro+lema con las condiciones "iric3let en I elegidas como la di0erencia de la
traza de las soluciones de los pro+lemas /eumann en I# Gos %alores en I de las deri%adas normales de
las soluciones de estos pro+lemas "iric3let son empleados para corregir la \
I
-
incial 5 encontrar el %alor
\
I
.
para la nue%a iteracin# Para dos partciones* podemos descri+ir el mtodo utilizando operadores
di0erenciales* as2* para n-*
Pro+lema /eumann .
p
A!
p
n+./ ,
=b en D
p
!
p
n+./,
=- so+re D
p
I
!
p
n
p
n+./ ,
=\
p
n
en I
* p=.* ,*
Pro+lema "iric3let 3
p
A
p
n+.
=- en D
p
p
n+.
=- so+re D
p
I
p
n+.
=!
.
n+./,
!
,
n+./ ,
en I
* p=.* ,#
Para la siguiente iteracin usaremos
\
I
n+.
=\
I
n
0
(
.
n
.
n+.
+
,
n
,
n+.
)
en I*
con un
0
(
-* 0
max
) elegido de 0orma adecuada#
Para mostrar en este procedimiento 0orma matricial intoduciremos los %ectores internos de grados e
li+ertad v
p
=x
*
( p)
5 w
p
=
*
( p)
* as2
Pro+lema /eumann .
p
(
A
* *
( p)
A
* I
( p)
A
I *
( p)
A
I I
( p)
)(
v
p
n+./ ,
p
n+./ ,
)
=
(
b
*
( p)
b
I
( p)
+\
p
n
)
* p=.* ,* :.#B;
Pro+lema "iric3let 3
p
A
* *
( p)
w
p
n+.
+A
* I
( p)
r
I
=0* p=.* ,* :.#C;
\
I
n+.
=\
I
n
0
(
j
.
n+.
+j
,
n+.
)*
donde el residual r
I
se de0ine como
'6
&. Introduccin
r
I
=
.
n+./ ,
,
n+./ ,
*
5 los 0lu)os j
p
n+.
por
j
p
n+.
=A
I *
( p)
w
p
n+./ ,
+A
I I
( p)
r
I
#
Para eliminar v
p
n+./ ,
* w
p
n+./,
5
p
n+./ ,
de :.#B; 5 :.#C; usamos la 0actorizacin por +lo6ues de las matrices
locales A
( p)
* los pro+lemas de /euman
.
p
dan
r
I
=( d
I
F \
I
n
)*
6ue indica 6ue la di0erencia
r
I
es igual al negati%o del residual del complemento de $c3ur para el sistema
:.#I;# "e los pro+lemas "iric3let
3
p
podemos esta+lecer
j
p
n+.
=S
( p)
r
I
=S
( p)
r
I
( d
I
F\
I
n
)#
Finalmente encontramos
\
I
n+.
\
I
n
=0( S
( .)
+S
( ,)
) ( d
I
F \
I
n
)#
El precondicionador para el sistema :.#I;* ste ser2a la matriz
S F=S|( S
( .)
)
.
+( S
( ,)
)
.
=( S
( .)
+S
( ,)
) | ( S
(.)
)
.
+( S
( ,)
)
.
#
este mtodo se le conoce como FE98 :#inite Element Tearing and *nterconnect;* espec20icamente FE98
con precondicionador K9ose-I p.DL#
El mtodo FE98 se puede re0ormular como un pro+lema de minimizacin con restricciones* minimizando
la suma de las 0ormas de energ2a de los dos su+pro+lemas su)etos a la restriccin x
I
(.)
x
I
( ,)
=0* tendremos
entonces 6ue
\
I
0ormar un %ector de multiplicadores de Gagrange KGi-IL* a este nue%o mtodo se le
conoce como FE98@"P :FE98 3ual%)rimal; KFar3-.L# Una descripcin pro0unda de estos mtodos puede
encontrarse en K9ose-IL* KMand-IL 5 en KPidl-BL#
'&
'. (e0ormacin elstica de slidos con el
m/todo de los elementos 0initos
Vamos a descri+ir la teor2a de elasticidad de slidos en dos 5 tres dimensiones# En este desarrollo
modelaremos slidos 0ormados por materiales 3omogneos e isotrpicos#
'.&. Elasticidad bidimensional
'.&.&. Es0uer.os y de0ormaciones
Para una estructura plana con es0uerzos 5 de0ormaciones aplicados en el mismo plano* podemos utilizar la
3iptesis de 6ue* para un mismo material* las de0ormaciones perpendiculares al plano sern de la misma
magnitud# s2* podemos omitir esta dimensin 5 tra+a)ar slo en el plano* asumiendo 6ue el campo de
desplazamientos est per0ectamente de0inido si se conocen los desplazamientos en las coordenadas ! e $
en todos sus puntos K&ote-A pBL#
El %ector de desplazamientos en un punto se de0ine como
u( ! , $)=
|
u( ! , $)
v( ! , $)
* :,#.;
en donde u ( ! , $) 5 v( ! , $) representan los desplazamientos de un punto en las coordenadas ! e $
respecti%amente#
partir del campo de desplazamientos :,#.; se deducen las de0ormaciones 3aciendo uso de la teor2a
general de elasticidad KEsc3C?L* el %ector de de0ormaciones es entonces
e=
|
e
!
e
$
! $
=
|
u
!
v
$
u
$
+
v
!
=
|
!
-
-
$
$
!
|
u
v
* :,#,;
donde
e
!
5
e
$
son las de0ormaciones normales 5
! $
la de0ormacin por cizalladura# Con respecto a la
de0ormacin longitudinal
e
z
3a5 6ue seFalar 6ue en el caso de de0ormacin plana se utiliza la 3iptesis de
6ue es nula# Por otra parte* en un estado de es0uerzo dic3a de0ormacin no es nula* pero s2 se supone 6ue
')
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
lo es
c
z
:la componente del es0uerzo perpendicular al plano;# Por consiguiente* en ninguno de los dos
casos 3a5 6ue considerar la de0ormacin
e
z
5a 6ue no inter%iene en las ecuaciones del tra+a)o de
de0ormacin al ser el producto
c
z
e
z
nulo# 9am+in consideramos 6ue
! z
=
$ z
=-
#
"e la ecuacin :,#,; se deduce 6ue los es0uerzos tangenciales
t
! z
5
t
$ z
son nulos# Usando la misma
3iptesis con respecto a la de0ormacin
e
z
* el es0uerzo
c
z
no inter%iene* por tanto el %ector de es0uerzos
ser
c=
|
c
!
c
$
t
! $
* :,#A;
con
c
!
5
c
$
es0uerzos normales 5
t
! $
el es0uerzo tangencial#
Ga relacin entre es0uerzos 5 de0ormaciones se deduce de la ecuacin constituti%a de la elasticidad
tridimensional KEsc3C?L* con las 3iptesis para
e
z
*
c
z
5
! z
=
$ z
=-
mencionadas anteriormente# $e
deduce entonces 6ue la relacin matricial entre es0uerzos 5 de0ormaciones est dada por
c=De# :,#D;
En el caso de considerar es0uerzos iniciales 5 de0ormaciones iniciales KRien-I p,IL* de+idos a cam+ios de
temperatura* encogimiento* crecimiento de cristales* es0uerzos residuales iniciales* etc#* utilizamos la
0orma ms general de :,#D; 6ue es
c=D
(
ee
-
)
+c
-
# :,#I;
Ga matriz D se conoce como matriz constituti%a o matriz de constantes elsticas# "el 9eorema de
Max4ell@&etti se deduce 6ue D es siempre simtrica KEsc3C? pDJL# En el caso de elasticidad isotrpica
D=
E
.+
,
|
. v -
v . -
- - (.v) / ,
*
donde E es el mdulo de Eoung 5 + el coe0iciente de Poisson#
'.&.'. 7rincipio de traba!os virtuales
Ga expresin integral de e6uili+rio en pro+lemas de elasticidad +idimensional puede o+tenerse 3aciendo
uso del principio de los tra+a)os %irtuales KRien-I ppJI@?.L# 9eniendo en cuenta los es0uerzos 5
de0ormaciones 6ue contri+u5en al tra+a)o %irtual de la estructura* la expresin del principio de tra+a)os
%irtuales puede escri+irse como
||
A
(
6e
!
c
!
+6e
$
c
$
+6
$
t
$
)
t dA=
||
A
(
6ub
!
+6vb
$
)
t dA+
|
l
(
6ut
!
+6vt
$
)
t ds+
i
(
6u
i
6
!
+6v
i
7
$
)
# :,#J;
la iz6uierda de la ecuacin est representado el tra+a)o 6ue los es0uerzos
c
!
*
c
$
5
t
! $
realizan so+re las
de0ormaciones %irtuales
6e
!
*
6e
$
5
6
! $
# El primer miem+ro a la derec3a de la igualdad representa las
0uerzas repartidas por unidad de %olumen
b
!
5
b
$
# El segundo miem+ro indica las 0uerzas repartidas so+re
el contorno
t
!
5
t
$
# E 0inalmente el tercer miem+ro las 0uerzas puntuales
6
i
5
7
i
so+re los
desplazamientos %irtuales 6u 5 6v# A 5 l son el rea 5 el contorno de la seccin trans%ersal del slido 5 t
su espesor# En pro+lemas de es0uerzo plano* t coincide con el espesor real* mientras 6ue en pro+lemas de
de0ormacin plana es usual asignar a t un %alor unidad#
'*
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
"e0iniendo el %ector de 0uerzas puntuales
q
i
=
|
6
i
7
i
*
el %ector de 0uerzas so+re el contorno
t =
|
t
!
t
$
*
podemos entonces expresar :,#J; en 0orma matricial
||
A
6e
9
c t dA=
||
A
6u
9
bt dA+
|
l
6u
9
t t ds+
i
6u
i
9
q
i
# :,#?;
"e las ecuaciones :,#,; 5 :,#D; se o+ser%a 6ue en las integrales del principio de tra+a)os %irtuales slo
inter%ienen las primeras deri%adas de los desplazamientos* lo 6ue implica 6ue se re6uiere continuidad de
clase
,
-
en la aproximacin de elementos 0initos#
'.&.). (iscreti.acin en elementos 0initos
Ga 0igura ,#. muestra el dominio D de un pro+lema* el cual se analiza +a)o las 3iptesis de elasticidad
+idimensional* cuenta adems con ciertas condiciones de 0rontera de "iric3let
I
u
5 de /eumann
I
5
#
D
I
5
I
u
#igura +.. 3ominio del problema.
Para nuestro desarrollo %amos a utilizar para discretizar el dominio elementos triangulares de tres nodos*
los cuales son sencillos de %isualizar# En la 0igura ,#, %emos la discretizacin del dominio D#
'%
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
I
5
I
u
#igura +.+. 3iscretizacin &mallado' del dominio.
Ga malla de elementos 0initos representa una idealizacin de la geometr2a real# Por consiguiente* el
anlisis por elementos 0initos reproduce el comportamiento de la malla escogida 5 no el de la estructura
real# $olamente compro+ando la con%ergencia de la solucin podemos estimar el grado de aproximacin
de la solucin de elementos 0initos a la exacta#
'.&.*. 8unciones de 0orma
Un elemento triangular de tres nodos se caracteriza por los nHmeros de sus nodos .* ,* 5 A* con sus
respecti%as coordenadas# Esta numeracin es local 5 tiene 6ue crearse una correspondencia con la
numeracin glo+al#
y
x
.
.
( ! , $)
y
x
.
,
( ! , $)
y
x
.
A
( ! , $)
#igura +./. #unciones de forma para un elemento finito triangular de tres nodos.
9omando un elemento aislado* como el de la 0igura ,#A* podemos expresar los desplazamientos
cartesianos de un punto cual6uiera en el interior del elemento en 0uncin de los desplazamientos de sus
nodos introduciendo las 0unciones de norma
.
i
* con i =.* ,*A
u ( ! , $)=
i=.
A
.
i
( ! , $) u
i
*
v( ! , $)=
i=.
A
.
i
( ! , $) v
i
*
donde
u
i
5
v
i
son los %alores discretos de desplazamiento en los nodos# Una 0uncin de 0orma
.
i
tiene 6ue
cumplir la condicin de %aler uno en la coordenada del nodo i 5 cero en los nodos 0=i#
',
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
Para o+tener unas 0unciones de 0orma ms 0ciles de tra+a)ar* es con%eniente 3acer un mapeo a un espacio
normalizado* como se muestra en la 0igura ,#D#
y
x
1
2
3
j
j 1 2
3
#igura +.2. (apeo de un elemento a un espacio normalizado.
"e0inamos entonces a u 5 v en trminos de las coordenadas normalizadas j 5 j* como sigue
u (j , j)=
i =.
A
.
i
( j ,j) u
i
*
v( j, j)=
i=.
A
.
i
( j, j) v
i
*
con lo 6ue podemos de0inir las 0unciones de 0orma como
.
.
( j, j)=.jj*
.
,
( j, j)=j*
.
A
( j, j)=j#
Gas 0unciones de cam+io de coordenada sern
! ( j, j)=
i=.
A
.
i
( j, j) !
i
*
$ (j , j)=
i =.
A
.
i
( j ,j) $
i
#
'.&.%. (iscreti.acin de los campo de de0ormaciones y es0uer.os
Podemos as2 expresar las componentes de la de0ormacion :,#,; como
u
!
=
i
.
i
!
u
i
*
u
!
=
i
.
i
!
u
i
*
v
!
=
i
.
i
!
v
i
*
v
$
=
i
.
i
$
v
i
#
'3
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
Para aplicar un cam+io de %aria+le en las primeras deri%adas re6ueriremos del )aco+iano
(
.
i
j
.
i
j
)
=
(
!
j
$
j
!
j
$
j
)
_
J
e
(
.
i
!
.
i
$
)
#
$2 det J
e
=-* entonces
(
.
i
!
.
i
$
)
=( J
e
)
.
(
.
i
j
.
i
j
)
#
3ora podemos de0inir el %ector de de0ormaciones :,#,; como
e=
|
e
!
e
$
! $
i
|
.
i
!
u
i
.
i
$
v
i
.
i
$
u
i
+
.
i
!
v
i
i
|
.
i
!
-
-
.
i
$
.
i
$
.
i
!
_
B
i
|
u
i
v
i
_
u
i
* :,#B;
donde
B
i
es la matriz de de0ormacin del nodo i# Visto en 0orma ms compacta
e=
|
B
.
B
,
B
n
|
u
.
u
,
u
n
*
0inalmente como
e=Bu# :,#C;
Puede %erse entonces 6ue la matriz de de0ormacin B est compuesta de tantas su+@matrices
B
i
como
nodos tienen el elemento#
Ga expresin discretizada del %ector de es0uerzos :,#A; se o+tiene a partir de :,#D;
c=D Bu#
Puede o+ser%arse de :,#B; 6ue la matriz de de0ormacin B del elemento triangular de tres nodos es
constante* lo 6ue implica 6ue las de0ormaciones 5 es0uerzos son constantes en todo el elemento# Esto es
consecuencia directa del campo de desplazamientos lineal escogido* cu5os gradientes son o+%iamente
constantes# Por consiguiente* en zonas de alta concentracin de es0uerzos ser necesaria utilizar una malla
tupida para aproximar la solucin de es0uerzos con su0iciente precisin#
'5
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
'.&.,. Ecuaciones de e9uilibrio de la discreti.acin
Para la o+tencin de las ecuaciones de e6uili+rio de la discretizacin partimos de la expresin del
principio de tra+a)os %irtuales aplicada al e6uili+ro de un elemento aislado#
Vamos a suponer 6ue so+re un elemento* como el de la 0igura ,#I* actHan 0uerzas msicas repartidas por
unidad de rea b 5 en sus lados 0uerzas de super0icie por unidad de longitud t# Gas 0uerzas de super0icie
pueden ser de dos tipos! de+idas a 0uerzas exteriores 6ue actHan so+re los lados del elemento 6ue 0orman
parte del contorno exterior de la estructura o de+idas a las 0uerzas de interaccin entre elementos 6ue se
transmite a tra%s de sus lados comunes# Ostas Hltimas pueden ignorarse desde un inicio* de+ido a 6ue se
anulan cuando se realiza el ensam+lado de todos los elementos#
3
1
2
u
A
, 6
A
v
A
,7
A
u
,
, 6
,
v
,
, 7
,
u
.
, 6
.
v
.
,7
.
b
$
b
!
t
$
t
!
$ , v
! , u
)
$ .
)
! .
Fuerzas msicas b=
|
b
!
b
$
Fuerzas de super0icie t =
|
t
!
t
$
||
A
e
6u
9
bt dA
e
|
l
e
6u
9
t t ds
e
=6u
9
q
e
*
reescri+2endola utilizando :,#C;
||
A
e
6u
9
B
9
c t dA
e
||
A
e
6u
9
bt dA
e
|
l
e
6u
9
t t ds
e
=6u
9
q
e
*
tomando adems en cuenta 6ue los desplazamientos %irtuales son ar+itrarios* 5 el espesor es constante*
t
||
A
e
B
9
c dA
e
t
||
A
e
b dA
e
t
|
l
e
t ds
e
=q
e
# :,#.-;
Ga ecuacin :,#.-; expresa el e6uili+rio entre las 0uerzas nodales de e6uili+rio 5 las 0uerzas de+idas a la
de0ormacin del elemento :la primer integral;* las 0uerzas msicas :segunda integral; 5 las de super0icie
:tercera integral;# $ustitu5endo el %ector de es0uerzos c por su %alor en 0uncin de los desplazamientos
nodales utilizando la 0orma general :,#I;
':
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
t
||
A
e
B
9
|
D
(
ee
-
)
+c
-
dA
e
t
||
A
e
b dA
e
t
|
l
e
t ds
e
=q
e
*
separando las integrales
t
||
A
e
B
9
DedA
e
t
||
A
e
B
9
De
-
dA
e
+t
||
A
e
B
9
c
-
dA
e
t
||
A
e
bdA
e
t
|
l
e
t ds
e
=q
e
*
aplicando de nue%o :,#C;
t
||
A
e
B
9
D BdA
e
_
K
e
u=t
||
A
e
B
9
De
-
dA
e
_
f
e
e
t
||
A
e
B
9
c
-
dA
e
_
f
c
e
+t
||
A
e
b dA
e
_
f
b
e
+t
|
l
e
t ds
e
_
f
t
e
+q
e
* :,#..;
donde K
e
es la matriz de rigidez del elemento 5 tenemos un con)unto de 0uerzas nodales e6ui%alentes
de+idas a! de0ormaciones iniciales f
e
e
* es0uerzos iniciales f
c
e
* 0uerzas msicas f
b
e
* 0uerzas en la super0icie
f
t
e
#
"e0iniendo el %ector de 0uerzas nodales e6ui%alentes del elemento como
f
e
= f
e
e
f
c
e
+ f
b
e
+ f
t
e
*
podemos expresar :,#..; como un sistema de ecuaciones para el elemento
K
e
u=f
e
+q
e
#
Ga ecuacin de e6uili+rio total de la malla se o+tiene esta+leciendo 6ue la suma de las 0uerzas nodales de
e6uili+rio en cada nodo de+e ser igual a la 0uerza nodal exterior* es decir
e
q
0
e
=q
0
*
esta es la suma de las contri+uciones de los %ectores de 0uerzas nodales de e6uili+rio de los distintos
elementos 6ue comparten el nodo con numeracin glo+al 0* 5
p
0
representa el %ector de 0uerzas puntuales
actuando en dic3o nodo#
Gas ecuaciones de e6uili+rio de la malla se o+tienen a partir de las contri+uciones de las matrices
elementales de rigidez 5 de los %ectores de 0uerzas nodales e6ui%alentes de los di0erentes elementos# s2
pues* tras el ensam+la)e* la ecuacin matricial glo+al se puede escri+ir como
K u= f *
donde K es la matriz de rigidez* u es el %ector de desplazamientos nodales 5 f el %ector de 0uerzas
nodales e6ui%alentes de toda la malla#
'ecordemos de nue%o 6ue las 0uerzas nodales de e6uili+rio de+idas al las 0uerzas de interaccin entre los
contornos de los elementos ad5acentes se anulan en el ensam+la)e* de+ido a 6ue dic3as 0uerzas tienen
igual magnitud 5 direccin* pero sentidos opuestos en cada elemento# e0ectos prcticos* solamente 3a5
6ue considerar el e0ecto de las 0uerzas de super0icie cuando se trate de 0uerzas exteriores actuantes so+re
lados de elementos 6ue pertenezcan al contorno de la estructura#
'.&.3. Ensamblado de la matri. de rigide.
El primer paso es generar una malla de elementos para el dominio e identi0icar los nodos#
)6
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
&
'
)
*
%
,
3
5
:
&6
&&
&'
&)
&*
&%
&,
&3
&5
&:
'6
'&
''
')
'*
'% ',
'3
'5
':
)6
)&
)'
))
#igura +.8. .umeracin global de los nodos en el dominio.
$e calcula la matriz elemental K
e
5 el %ector f
e
para cada elemento# Por e)emplo* en la 0igura ,#J se
destaca el elemento con nodos A* I 5 C# $u ensam+la)e es mostrado en la 0igura ,#?#
A
!
.
!
A
$
.
$
C
!
,
!
C
$
,
$
I
!
A
!
I
$
A
$
A
!
A
$
C
!
C
$
I
!
I
$
.
!
.
$
,
!
,
$
A
!
A
$
+ocal
$lobal
|
9
..
e
9
.,
e
9
.A
e
9
.D
e
9
.I
e
9
.J
e
9
,.
e
9
,,
e
9
,A
e
9
,D
e
9
,I
e
9
,J
e
9
A.
e
9
A,
e
9
AA
e
9
AD
e
9
AI
e
9
AJ
e
9
D.
e
9
D,
e
9
DA
e
9
DD
e
9
DI
e
9
DJ
e
9
I.
e
9
I,
e
9
IA
e
9
ID
e
9
II
e
9
IJ
e
9
J.
e
9
J,
e
9
JA
e
9
JD
e
9
JI
e
9
JJ
e
|
u
.
e
u
,
e
u
A
e
u
D
e
u
I
e
u
J
e
=
|
f
.
e
f
,
e
f
A
e
f
D
e
f
I
e
f
J
e
=
|
1
1
1
1
f
.
e
f
,
e
1
1
f
I
e
f
J
e
1
1
1
1
1
1
f
A
e
f
D
e
1
#
)'
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
8ntroducimos a3ora el %ector de de0ormaciones e* el cual est dado por
e=
|
e
!
e
$
e
$
! $
$ z
z !
=
|
u
!
v
$
w
z
u
$
+
v
!
v
z
+
w
$
w
!
+
u
z
*
donde
e
!
*
e
$
5
e
z
son las de0ormaciones normales* mientras 6ue
! $
*
$ z
5
z !
son las de0ormaciones por
cizalladura#
El %ector de tensiones c se de0ine como
c=
|
c
!
c
$
c
z
t
! $
t
$ z
t
z !
*
donde
c
!
*
c
$
5
c
z
son las tensiones normales 5
t
! $
*
t
$ z
5
t
z !
las tensiones tangenciales#
Para un medio 3omogneo e isotrpico la matriz constituti%a es KRien-I p.CJL
D=
E (.v)
( .+v) (.,%)
|
.
v
( .v)
v
(.v)
- - -
v
( .v)
.
v
(.v)
- - -
v
( .v)
v
( .v)
. - - -
- - -
(.,%)
,(.v)
- -
- - - -
(.,%)
,(.v)
-
- - - - -
( .,%)
,(.v)
*
donde E es el mdulo de Eoung 5 + es el coe0iciente de Poisson#
))
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
'.'.'. 8unciones de 0orma
El %ector
u
i
( ! , $ , z)=
|
u
i
v
i
w
i
i
.
i
( ! , $ , z) u
i
*
v( ! , $ , z)=
i
.
i
( ! , $ , z ) v
i
*
w( ! , $ , z)=
i
.
i
( ! , $ , z) w
i
#
Para realizar el mapeo al espacio normalizado* tenemos
u (j , j, )=
i=.
D
.
i
(j , j, ) u
i
*
v( j, j ,)=
i=.
D
.
i
( j ,j ,) v
i
*
w(j , j, )=
i=.
D
.
i
( j, j, ) w
i
S
donde u* v 5 w representan los %alores discretos de los desplazamientos en los nodos del elemento*
.
i
son
las 0unciones de 0orma#
z
x
j
y
j
1 3
4
2
1
3
4
2
#igura +.<. (apeo al espacio normalizado.
Elegimos las siguientes 0unciones lineales para el mapeo
.
.
( j, j, )=.jj*
.
,
( j, j ,)=j*
)*
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
.
A
( j, j, )=j*
.
D
( j ,j ,)=#
Gas 0unciones de cam+io de coordenada son entonces
! ( j, j, )=
i=.
D
.
i
( j, j ,) !
i
*
$ (j , j, )=
i=.
D
.
i
(j , j, ) $
i
*
z ( j, j ,)=
i=.
D
.
i
( j, j ,) z
i
S
donde !* $ 5 z son las coordenadas de los %rtices del elemento#
'.'.). (iscreti.acin de los campo de de0ormaciones y es0uer.os
Gas de0ormaciones entonces son
u
!
=
i
.
i
!
u
i
*
u
$
=
i
.
i
$
u
i
*
u
z
=
i
.
i
z
u
i
S
v
!
=
i
.
i
!
v
i
*
v
$
=
i
.
i
$
v
i
*
v
z
=
i
.
i
z
v
i
S
w
!
=
i
.
i
!
w
i
*
w
$
=
i
.
i
$
w
i
*
w
z
=
i
.
i
z
w
i
#
plicamos la regla de la cadena a primeras deri%adas para o+tener el )aco+iano J
e
* ste es
(
.
i
j
.
i
j
.
i
)
=
(
!
j
$
j
z
j
!
j
$
j
z
j
!
)
_
J
e
(
.
i
!
.
i
$
.
i
z
)
*
si det J
e
=-* entonces
(
.
i
!
.
i
$
.
i
z
)
=( J
e
)
.
(
.
i
j
.
i
j
.
i
)
*
)%
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
"e esta 0orma
e=
|
e
!
e
$
e
$
! $
$ z
z !
i
|
.
i
!
u
i
.
i
$
v
i
.
i
z
w
i
.
i
$
u
i
+
.
i
!
v
i
.
i
z
v
i
+
.
i
$
w
i
.
i
!
w
i
+
.
i
z
u
i
*
sta expresin se puede escri+ir como
e=
i
|
.
i
!
- -
-
.
i
$
-
- -
.
i
z
.
i
$
.
i
!
-
-
.
i
z
.
i
$
.
i
z
-
.
i
!
|
u
i
v
i
w
i
i
B
i
u
i
5 de 0orma ms compacta como
e=
|
B
.
B
,
B
n
|
u
.
u
,
u
n
*
0inalmente
e=Bu#
),
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
'.'.*. Ecuaciones de e9uilibrio de la discreti.acin
"e0iniendo el %ector de 0uerzas puntuales
q
i
=
|
6
i
7
i
=
i
*
el %ector de 0uerzas so+re el contorno
t =
|
t
!
t
$
t
z
*
podemos entonces expresar la ecuacin del principio de tra+a)os %irtuales como
||
7
6e
9
c d7 =
||
7
6u
9
bd7 +
|
s
6u
9
t ds+
i
6u
i
9
q
i
#
'ealizando un desarrollo similar al caso +idimensional* podemos llegar a la ecuacin de e6uili+rio
discretizada para un elemento* sta es
||
7
e
B
9
D Bd7
e
_
K
e
u=
||
7
e
B
9
De
-
d7
e
_
f
e
e
||
7
e
B
9
c
-
d7
e
_
f
c
e
+
||
7
e
bd7
e
_
f
b
e
+
|
s
e
t ds
e
_
f
t
e
+q
e
#
)3
). >na aplicacin de la paraleli.acin
con memoria compartida
).&. Introduccin
/uestra primer aproximacin para paralelizar la solucin del sistema de ecuaciones resultante del mtodo
de elemento 0inito es utilizar el es6uema de paralelizacin con memoria compartida# Veremos como este
tipo de es6uema se presta para la paralelizacin del mtodo de gradiente con)ugado#
Vamos a comenzar 3a+lando de la ar6uitectura del procesamiento en paralelo* esto es por6ue tanto el
hardware como el software utilizados para el cmputo en paralelo son muc3o ms comple)os 5
so0isticados 6ue los utilizado en el cmputo serial* lo 6ue 3ace 6ue en el cmputo en paralelo sea ms
di0icil o+tener +uenos resultados so+re todo en las primeras implementaciones de los algoritmos#
Es necesario entender* por lo menos conceptualmente* cuales son las caracter2sticas tanto del hardware
como del software* con el 0in de poder diseFar algoritmos 6ue sa6uen %enta)a de esta 0orma de cmputo*
de no 3acerlo podemos 3acer 6ue nuestros algoritmos caigan en los mHltiples cuellos de +otella 6ue
presentan estas ar6uitecturas#
Podemos decir entonces 6ue la ar6uitectura del hardware de cmputo en paralelo nos ser%ir de gu2a para
diseFar el software para la paralelizacin de los algoritmos de solucin de pro+lemas de elemento 0inito#
).'. Ar9uitectura del procesamiento en paralelo
Ga paralelizacin con memoria compartida se re0iere a la utilizacin de computadoras con dos o ms
unidades de procesamiento 6ue accesan a la misma memoria principal# Ga ar6uitectura ms usada en este
tipo de paralelizacin es con procesadores multi%core* es decir procesadores 6ue tienen ms de un nHcleo
:core; o unidad de procesamiento :CPU;# 9am+in es 0acti+le tener computadoras con ms de un
procesador multi% core accesando la misma memoria :0igura A#.;#
):
). >na aplicacin de la paraleli.acin con memoria compartida
3rocesador
Core Core
Cache Cache
3rocesador
C7> C7>
Cache L1
1emoria principal 4RA15
Fus del sistema
Cache L2
C7> C7>
Cache L1
Cache L1
Cache L1
3rocesador
Core Core
Cache Cache
3rocesador
C7> C7>
Cache L1
Cache L2
C7> C7>
Cache L1
Cache L1
Cache L1
#igura /.. ,onfiguracin de un sistema multiprocesador multin>cleo
l poder accesar la misma memoria es entonces posi+le 3acer 6ue los CPUs cooperen en la resolucin de
un pro+lema# En la taxonomia de Fl5nn KFl5n?,L* esta estrategia es conocida como (ultiple
*nstructions% (ultiple 3ata* o por sus siglas M8M"#
Ga %elocidad de operacin de los procesadores es muc3o ma5or 6ue la %elocidad de acceso de la memoria
'M de las computadoras KPul0CIL* esto es de+ido a 6ue es mu5 costoso 0a+ricar memoria de alta
%elocidad# Para sol%entar esta di0erencia en %elocidad* los procesadores modernos inclu5en memoria
cache* en di0erentes ni%eles :G.* G, 5 en algunos casos GA;# Estas memoria cache son de alta %elocidad
aun6ue de menor capacidad 6ue la memoria 'M del sistema# $u 0uncin es la de leer de 0orma
anticipada memoria 'M mientras el CPU est tra+a)ando 5 modi0icar la in0ormacin leida de 0orma
local# Cuando entra nue%a in0ormacin al cac3e la in0ormacin 5a procesada es almacenada en la
memoria 'M# >tra de las %enta)as del uso de caches es 6ue son adems ms e0icientes cuando leen o
escri+en localidades de memoria continuas K"rep-? p.IL#
El uso de cac3es como un mtodo de acceso intermedio a la memora principal incrementa muc3o la
e0iciencia de los procesadores mientras mantiene +a)os los costos de la computadora# Ga siguiente ta+la
muestra los ciclos de relo) de CPU necesarios para accesar cada tipo de memoria en un procesador
Pentium M!
Acceso a %iclos
Registro C7> T .
+& G )
+' G &*
Memoria RAM G '*6
$in em+argo* mantener co3erencia en la in0ormacin cuando %arios procesadores accesan la misma
memoria 'M es comple)o* los detalles se pueden consultar en K"rep-?L# Go importante a notar es 6ue
para lograr +uenos algoritmos en paralelo con memoria compartida es necesario 6ue cada CPU tra+a)e en
localidades de memoria di0erentes* 5a 6ue si dos CPU modi0ican la misma direccin de memoria se crea
una 0alla en la co3erencia entre los caches* lo 6ue o+liga a los CPU a accesar a la memoria 'M* lo
cual como %imos es mu5 costoso# Es mu5 importante tener en cuenta la ar6uitectura de caches de los
sistemas multi% core al momento de diseFar algoritmos en paralelo cu5o re6uerimiento sea ser mu5
e0icientes#
*6
). >na aplicacin de la paraleli.acin con memoria compartida
>tra de las des%enta)as del es6uema de procesamiento en paralelo con memoria compartida es 6ue existe
un cuello de +otella en el acceso a la memoria principal* 5a 6ue slo un procesador puede accesarla la
%ez* esto ser ms 5 mas notorio cuando el sistema tenga ms procesadores#
).). 7araleli.acin con threads
Veamos a3ora lo 6ue signi0ica en cuanto a la programacin el procesamiento con threads# Un programa
serial e)ecuta slo una secuencia de instrucciones* en cam+io* un programa paralelizado puede contener
di0erentes secuencias de instrucciones 6ue se e)ecutan simutneamente# la e)ecucin de cada secuencia
de instrucciones se le conoce como un 3ilo de procesamiento o thread# Cada thread posee sus propios
registros de control 5 su propio stac? de datos* mientas 6ue comparte el uso de la memoria del mont2culo
:heap; con los dems threads del programa# En las computadoras multi%core logra la me)or e0iciencia
cuando cada CPU e)ecuta slo un thread#
Comunmente el mane)o de la programacin con threads se 3ace a tra%s de li+rer2as de software* entre las
ms comunes estn Pindo4s 93reads 5 P>$8N 93reads# En los Hltimos aFos se 3an incluido extensiones
a los lengua)es de programacin :C* CUU o Fortran; 6ue simpli0ican la programacin de las li+rer2as de
threads* como es el caso de >penMP KC3ap-BL# Oste incorpora directi%as para el compilador 6ue indican
de 0orma simple 6ue partes del cdigo de+en paralelizarse* la declaracin de memoria compartida o local*
+alance de carga* etc#
Un programa puede entonces crear %arios threads para procesar un +lo6ue del algoritmo* despus e)ecutar
un +lo6ue de 0orma serial para despus regresar a procesar en paralelo* como se muestra en la 0igura A#,#
Por e)emplo* si se tiene 6ue 3acer una multiplicacin de una matriz por %ector en %arias ocasiones# En
este caso cada thread accesa cierto rango de renglones de la matriz* todos los threads accesan al %ector
por el cual se multiplica#
C7> &
C7> '
C7> )
C7> "
C7> *
C7>
activo
C7>
inactivo
7rocesamiento
serial
7rocesamiento
paralelo
-incroni.acin Creacin de
los threads
t
#igura /.+. 7isualizacin temporal de un proceso e0ecutando threads en diferentes procesadores
1a5 %arias casos en los cuales se puede %er limitada la e0iciencia del procesamiento con t3reads# Por
e)emplo* la dependencia de datos* sta se da cuando un thread tiene 6ue esperar a 6ue otro termine una
*&
). >na aplicacin de la paraleli.acin con memoria compartida
operacin para poder continuar# Entre ms dependencia exista entre los datos* ms di02cil ser paralelizar
un algoritmo# Por e)emplo* el algoritmo de sustitucin 3acia atrs para resol%er sistemas de ecuaciones
triangulares presenta muc3a dependencia para encontrar la solucin de cada incgnita#
Un caso ms comple)o ser2a cuando dos threads modi0ican los mismos datos* un thread podr2a entonces
alterar un dato 6ue otro thread espera permanezca constante# $e pierde entonces la sincron2a en los
algoritmos# Es necesario implementar sistemas de +lo6ueo de datos para poder modi0icar los datos de
0orma ordenada# Esto pro%oca 6ue un t3read tenga 6ue parar 5 esperar a 6ue otro termine para poder en su
momento modi0icar o leer el %alor#
l repartir un tra+a)o entre %arios threads puede suceder 6ue la carga de tra+a)o no est +alanceada*
pro%ocando 6ue uno o ms procesadores terminen antes 5 estn inacti%os* s2mplemente esperando#
Entonces nuestro algoritmo ser tan rpido como el ms lento de los threads# 'esultando en un
desperdicio de poder de cmputo#
"espus de %er las caracter2sticas de la programacin con threads 5 memoria compartida* podemos
+uscar entonces un tipo de algoritmo 6ue sea adecuado para 0uncionar en la paralelizacin de la solucin
de sistemas de ecuaciones# En particular* uno 6ue se a)usta +astante +ien a este es6uema es el mtodo de
gradiente con)ugado* el cual* como %eremos tiene la %enta)a de ser 0cilmente paraleliza+le utilizando este
es6uema de procesamiento en parelelo con memoria compartida#
).*. Algoritmo de gradiente con!ugado
El algoritmo de gradiente con)ugado es un mtodo iterati%o para minimizar 0unciones cuadrticas
con%exas de la 0orma
f ( x)=
.
,
x
9
A xx
9
b* :A#.;
donde x , bR
n
5 AR
nn
es una matriz simtrica positi%a de0inida#
Para minimizar f ( x) calculamos primero el gradiente de :A#.;*
\ f ( x)=Axb#
&uscando igualar a cero el gradiente* podemos %er el gradiente con)ugado como un mtodo iterati%o para
resol%er s5stemas de ecuaciones lineales
A x=b#
aplicando el concepto de %ectores con)ugados a una matriz
partir de una matriz A simtrica positi%a de0inida* podemos de0inir un producto interno como
x
9
A y= x , y
A
#
3ora* decimos 6ue un %ector x es con)ugado a otro %ector y con respecto a una matriz A si
x , y
A
=-* con x=y#
Ga idea del algoritmo es utilizar direcciones con)ugadas para el descenso en la +Hs6ueda del punto ptimo
x
V
K/oce-J p.-AL * es decir
x
V
=o
.
p
.
+o
,
p
,
+.+o
n
p
n
*
*'
). >na aplicacin de la paraleli.acin con memoria compartida
los coe0icientes estn dados a partir de la com+inacin lineal
A x
V
=o
.
A p
.
+o
,
A p
,
+.+o
n
A p
n
=b*
con
o
?
=
p
?
9
b
p
?
9
A p
?
=
p
?
, b
p
?
, p
?
A
#
partir de una matriz A de rango n slo se pueden de0inir n %ectores A@con)ugados* por lo tanto el
algoritmo de gradiente con)ugado garantiza la o+tencin de una solucin en un mximo de n iteraciones#
"e la 0rmula de actualizacin
x
?+.
=x
?
+o p
?
*
tomando p como una direccin de descenso#
"e0inamos
g
?
=\ f
(
x
?
)*
el tamaFo de paso o 6ue minimiza la 0uncin f ( x) a lo largo de la direccin
x
?
+o p
?
es
o
?
=
g
?
9
p
?
p
?
9
A p
?
#
$i de0inimos
p
?+.
como la direccin ms cercana al gradiente
g
?
+a)o la restriccin de ser con)ugado#
Esta direccin est dada por la pro5eccin de
g
?
en el espacio ortogonal a
p
?
con respecto al producto
interno inducido por A* as2
p
?+.
=g
?
+
p
?
9
A g
?
p
?
9
A p
?
p
?
#
l utilizar el negati%o del gradiente tendremos una direccin de descenso#
sean
x
-
* coordenada inicial
g
-
- A x
-
b
* gradiente inicial
p
-
- g
-
* direccin inicial de descenso
e* tolerancia
? - -
inicio
mientras
g
?
=0
* es decir
?ran7 ( A)
|
g
?|
>e
o
?
-
g
?
9
p
?
p
?
9
A p
?
x
?+.
- x
?
+o
?
p
?
g
?+.
- A x
? +.
b
?
-
g
?+.
9
A p
?
p
?
9
A p
?
p
?+.
- g
? +.
+
?+.
p
?
? - ?+.
0inWmientas
0in
Algoritmo /.. @radiente con0ugado.
*)
). >na aplicacin de la paraleli.acin con memoria compartida
Una 0rma ms econmica del algoritmo A#.* en la cual se reduce la cantidad de productos matriz@%ector
K/oce-J p..,L es la mostrada en el algoritmo A#,#
sean
x
-
* coordenada inicial
g
-
- A x
-
b
* gradiente inicial
p
-
- g
-
* direccin inicial de descenso
e* tolerancia
? - -
inicio
mientras g
?
=0* es decir
?ran7 ( A)
|
g
?|
>e
w - A p
?
o
?
-
g
?
9
g
?
p
?
9
w
x
?+.
- x
?
+o
?
p
?
g
?+.
- g
?
+ow
?
-
g
?+.
9
g
?+.
g
?
9
g
?
p
?+.
- g
?+.
+
?+.
p
?
? - ?+.
0inWmientas
0in
Algoritmo /.+. @radiente con0ugado prctico.
).%. 8ormulacin en paralelo
l realizar la paralelizacin del algoritmo es importante considerar 6ue 3a5 un costo en tiempo de
procesamiento cada %ez 6ue se realiza una sincronizacin entre los threads utilizados* esta sincronizacin
es mane)ada tanto por el sistema operati%o como por la li+rer2a de mane)o de threads# $i el algoritmo A#,
lo implementamos calculando indi%idualmente cada producto punto* suma de %ectores* %ector por escalar
5 matriz por %ector* tendrmos ms de una decena de puntos de sincronizacin#
Ga %ersin paralelizada del algoritmo anterior reduciendo los puntos de sincronizacin!
**
). >na aplicacin de la paraleli.acin con memoria compartida
sean
x
-
* coordenada inicial
g
-
- A x
-
b
* gradiente inicial
p
-
- g
-
* direccin inicial de descenso
e* tolerancia
n - 'englones ( x)
? - -
inicio
mientras
g
?
=0
* es decir
?ran7 ( A)
|
g
?|
>e
5 - -* guardar p
?
9
w
g - -* guardar g
?
9
g
?
paralelizar para i - ..n
( w)
i
- -
para 0 - ..n
( w)
i
- ( w)
i
+( A)
i 0 (
p
?)
0
0inWpara
5 - 5+
(
p
? )
i
( w)
i
g - g+
(
g
? )
i
(
g
? )
i
0inWpara
o
?
-
g
5
h - -* guardar g
? +.
9
g
? +.
paralelizar para i - ..n
(
x
?+. )
i
-
(
x
? )
i
+o
? (
p
? )
i
(
g
?+.)
i
-
(
g
?)
i
+o
?
( w)
i
h - h+
(
g
? +.)
i
(
g
? +. )
i
0inWpara
?
-
h
g
paralelizar para i - ..n
(
p
?+.)
i
-
(
g
?+.)
i
+
?+.(
p
? )
i
0inWpara
? - ?+.
0inWmientas
0in
Algoritmo /./. @radiente con0ugado en paralelo.
$e 3an agrupado las operaciones alge+raicas en tres ciclos* 6uedando slo dos puntos de sincronizacin*
uno para calcular
o
?
5 otro para
?
# Es posi+le reordenar el algoritmo para disminuir aHn ms los puntos
de sincronizacin K"zeCAL manteniendo la esta+ilidad numrica# Para nuestro programa elegimos
mantener en su escencia el algoritmo A#,* mostramos un extracto en el algoritmo A#D#
VectorX9Y (:ro4s;S MM (radient
VectorX9Y P:ro4s;S MM "escent direcction
VectorX9Y P:ro4s;S MM VP
ompWsetWnumWt3reads:t3reads;S
9 gg Z -#-S
#pragma omp parallel for default(shared) reduction(+:gg)
schedule(guided)
0or :int i Z .S i XZ ro4sS UUi;
[
9 sum Z -#-S
int 7m Z #'o4$ize:i;S
0or :register int 7 Z -S 7 X 7mS UU7;
[
sum UZ #Entr5:i* 7;VN:#8ndex:i* 7;;S
\
(:i; Z sum @ E:i;S MM ( Z N @ ES
P:i; Z @(:i;S MM P Z @(
gg UZ (:i;V(:i;S MM gg Z (]V(
\
9 epsilon Z toleranceVtoleranceS
int step Z -S
43ile :step X maxWsteps;
[
MM 9est termination condition
i0 :gg XZ epsilon; MM /orm:(n; XZ tolerance
[
+rea7S
\
9 p4 Z -#-S
#pragma omp parallel for default(shared) reduction(+:pw)
schedule(guided)
0or :int i Z .S i XZ ro4sS UUi;
[
9 sum Z -#-S
int 7m Z #'o4$ize:i;S
0or :register int 7 Z -S 7 X 7mS UU7;
[
sum UZ #Entr5:i* 7;VP:#8ndex:i* 7;;S
\
P:i; Z sumS MM P Z P
p4 UZ P:i;VP:i;S MM p4 Z P]VP
\
9 alp3a Z ggMp4S MM alp3a Z :(]V(;M:P]VP;
9 gngn Z -#-S
#pragma omp parallel for default(shared) reduction(+:gngn)
0or :int i Z .S i XZ ro4sS UUi;
[
N:i; UZ alp3aVP:i;S MM Nn Z N U alp3aVP
(:i; UZ alp3aVP:i;S MM (n Z ( U alp3aVP
gngn UZ (:i;V(:i;S MM gngn Z (n]V(n
\
9 +eta Z gngnMggS MM +eta Z :(n]V(n;M:(]V(;
#pragma omp parallel for default(shared)
0or :int i Z .S i XZ ro4sS UUi;
[
P:i; Z +etaVP:i; @ (:i;S MM Pn Z @( U +etaVP
\
gg Z gngnS
UUstepS
\
Algoritmo /.2. Seccin del cdigo en ,AA del algoritmo de gradiente con0ugado en paralelo.
*%
). >na aplicacin de la paraleli.acin con memoria compartida
).,. Implementacin con matrices ralas
Ga parte ms costosa del algoritmo A#A es la multiplicacin matriz@%ector* la cual tiene 6ue realizarse una
%ez en cada iteracin# Para a3orrar tanto memoria como tiempo de procesamiento slo almacenaremos los
elementos de la matriz A 6ue sean distintos de cero# Go cual es con%eniente* dado 6ue las matrices de
rigidez resultantes de pro+lemas de elemento 0inito son ralas* es decir* la ma5or parte de las entradas de la
matriz A son cero#
1a5 %arias estratgias de almacenamiento en memoria de matrices ralas* dependiendo de la 0orma en 6ue
se accesarn las entradas# El mtodo ,ompressed Bow Storage K$aad-A pAJ,L es adecuado para el caso
del algoritmo A#A* en el cual se accesarn las entradas de cada rengln de la matriz A en secuencia#
(
B D - - - -
- - . A - -
, - . - ? -
- C A - - .
- - - - - I
)
5
&
*
'
&
)
)
*
'
&
&
)
3
%
:
'
)
)
&
,
%
,
rreglo de 2ndices
rreglo de %alores
#igura /./. Almacenamiento con Compressed 'o4 $torage.
Con este mtodo* por cada rengln de la matriz se guardan dos arreglos# Uno conteniendo los 2ndices 5
otro los %alores de los elementos de ese rengln cu5o %alor sea di0erente a cero# $i +uscamos en un
rengln una entrada con cierto 2ndice de columna* se tendr un costo de +Hs6ueda del elemento de orden
C( n) en el peor caso# $in em+argo* tenemos la %enta)a 6ue* para el caso de multiplicacin matriz %ector el
rden de +Hs6ueda es C(.)* esto es por6ue no se 3ace una +Hs6ueda sino 6ue se toman los elementos de
cada rengln uno tras otro#
>tra de las %enta)as de utilizar ,ompressed Bow Storage es 6ue los datos de cade rengln de la matriz de
rigidez son accesados en secuencia uno tras otro* esto producir una %enta)a de acceso al entrar el +lo6ue
de memoria de cada rengln en el cache del CPU#
Para pro+lemas de elemento 0inito* es posi+le conocer la estructura de la matriz de rigidez antes de
llenarla* 5a 6ue son conocidas las conecti%idades de los nodos en el mallado# $i un nodo i est conectado
con un nodo 0 entonces la matriz rala tendr las entradas ( i , 0 )* ( 0 , i )* ( i , i ) 5 ( 0 , 0 ) distintas de cero#
Conocer de antemano la estructura 3ar ms e0iciente la reser%a de memoria de cada arreglo de la matriz
rala# Para pro+lemas con m grados de li+ertad por nodo las entradas de la matriz di0erentes de cero sern
( im? , 0ml )* ( 0m? , iml )* ( im? ,im? ) 5 ( 0m? , 0m? )* con m, l =-.,#
).3. Resultados
Gos siguientes resultados se re0ieren a encontrar la de0ormacin de un slido tridimensional de ,].,-*.,A
elementos 5 AB.*J?D nodos* 0igura A#D# Con tres grados de li+ertad por nodo* tenemos entonces* un
sistema de .].DI*-,, ecuaciones#
*,
). >na aplicacin de la paraleli.acin con memoria compartida
#igura /.2. Besultado del problema de deformacin de slidos tridimensional.
Para estas prue+as se utiliz una computadora MacPro D con oc3o procesadores 8ntel Neon a ,#,J(1z*
con 35pert3reading 3a+ilitado :es decir .J CPUs;# Ga gr0ica A#. muestra los el tiempo 6ue el programa
tard en resol%er el pro+lema paralelizando con una cantidad di0erente de CPUs en cada una de las .J
prue+as# Ga primer prue+a 0ue con un CPU* la segunda con dos* 5 as2 sucesi%amente#
& ' ) * % , 3 5 : &6 && &' &) &* &% &,
6.66
%.66
&6.66
&%.66
'6.66
'%.66
Tiempo real HmI
Tiempo ideal HmI
7rocesadores
T
i
e
m
p
o
H
m
I
@rfica /.. ,omparacin entre tiempo de e0ecucin real $ el ideal esperado.
$ea
t
.
el tiempo 6ue tard el resol%erse el pro+lema con un CPU* entonces* en la gr0ica anterior el
tiempo ideal es
t
.
/ n
* done n es el nHmero de procesadores utilizado# Podemos dar una medida de
e0iciencia E del algoritmo
E=
t
.
nt
n
*
con
t
n
el tiempo de e)ecucin 6ue le tom al programa en terminar el proceso#
*3
). >na aplicacin de la paraleli.acin con memoria compartida
& ' ) * % , 3 5 : &6 && &' &) &* &% &,
6.66
6.&6
6.'6
6.)6
6.*6
6.%6
6.,6
6.36
6.56
6.:6
&.66
7rocesadores
E
0
i
c
i
e
n
c
i
a
@rfica /.+ Eficiencia de la paralelizacin del gradiente con0ugado.
Es notorio en la gr0ica A#, como la e0iciencia de la paralelizacin disminu5e con0orme se aumenta el
nHmero de CPUs# Esto es de+ido a 6ue se crea un cuello de +otella cuando ms de un CPU trata de
accesar a la memor2a 'M de 0orma simultnea* lo cual es ine%ita+le para este tipo de ar6uitecturas# El
6ue los procesadores utilicen las l2neas de cache disminu5e este e0ecto* pero el 3ec3o de 6ue se trate de
pro+lemas 6ue utilizan una gran cantidad de memoria 3ara 6ue la a5uda del cache sea so+repasada# Una
alternati%a podr2a ser realizar este proceso utilizando (PUs* las cuales estn diseFadas para paralelizar
me)or el acceso a memoria#
$in em+argo* podemos decir 6ue para un nHmero reducido de CPUs :D o menos; la paralelizacin del
gradiente con)ugado 0unciona +ien 5a 6ue mantiene un rendimiento por arri+a del B-^#
*5
*. >na aplicacin de la paraleli.acin
con memoria distribuda
*.&. 7araleli.acin con memoria distribuida
Este es6uema de paralelizacin implica 6ue un programa a3ora ser e)ecutado multiples %eces en %arias
computadoras conectadas en red# cada instancia del programa :proceso; se le asigna una parte del
tra+a)o* los resultados son intercam+iados entre los procesos a 0in de cola+orar para lograr un resultado
glo+al#
Para la comunicacin entre los procesos utilizamos el estndar (essage )assing *nterface :MP8;
KMP8F-BL* el cual consiste en un con)unto de li+rer2as 5 programas 6ue se encargan de 0acilitar la
implementacin 5 administracin de programas 6ue re6uieren transmitir in0ormacin con gran e0iciencia#
Estos programas se e)ecutarn simultneamente en %arias computadoras interconectadas por medio de una
red de cmputo#
Ga 0igura D#. muestra un es6uema de la ar6uitectura de procesamiento con memoria distri+u2da# En este
modelo se tiene 6ue cada computadora puede tener uno o ms procesadores 6ue localmente pueden
tra+a)ar +a)o el es6uema de memoria compartida o si se re6uiere +a)o un es6uema de memoria distri+u2da
dentro de la misma computadora#
67itc& de red
%omputadora
Interfaz de red
7rocesador 7rocesador
%omputadora
Interfaz de red
7rocesador 7rocesador
%omputadora
7rocesador
Interfaz de red
7rocesador
Memoria
%omputadora
7rocesador
Interfaz de red
7rocesador
Memoria
%omputadora
7rocesador
Interfaz de red
7rocesador
Memoria
Memoria Memoria
#igura 2.. Es5uema de procesamiento con memoria distribuida.
En su 0orma +sica* el modelo MP8 permite e)ecutar un mismo programa en %arias computadoras 5 en
%arios procesadores dentro de cada computadora# cada instancia del programa :proceso; se le asigna un
*:
*. >na aplicacin de la paraleli.acin con memoria distribuda
nHmero de rango 6ue %a de - a . .* donde . es el nHmero de instancias del programa# Visto de 0orma
conceptual* la operacin de MP8 es una red de comunicacin donde todos los procesos pueden mandar
datos :o mensa)es; a todos los procesos* %er 0igura D#,#
7roceso
rango 6
7roceso
rango &
7roceso
rango '
7roceso
rango )
7roceso
rango "4&
7roceso
rango *
#igura 2.+. 3iagrama conceptual de la comunicacin con ()*.
/ingun proceso tiene prioridad so+re otro* aun6ue se suele de)ar al proceso con rango cero el control de
todos los dems# Ga comunicacin entre los procesos es transparente para el usuario 5 se selecciona de
0orma automtica* sta puede ser esta+lecida utilizando soc7ets 9CPM8P en el caso de 6ue los procesos
estn en di0erentes computadoras* o utilizando memoria compartida monitoreada con polling en el caso de
6ue los procesos residan en la misma computadora#
*.'. (escomposicin de dominios
l discretizar slidos en %arios millones de elementos* se utiliza tal cantidad de in0ormacin 6ue 3ace 6ue
el clculo de la solucin re6uiera tiempos de procesamiento 5Mo cantidades de memoria tales 6ue no es
posi+le resol%er el pro+lema utilizando una sola computadora en un tiempo razona+le# Es necesario
di%idir el dominio en particiones* para resol%er cada una independientemente 5 despus com+inar las
soluciones locales de 0orma iterati%a#
1a5 dos 0ormas de tra+a)ar la descomposicin de dominio* con particiones con traslape 5 sin traslape# En
este tra+a)o elegimos utilizar la %ersin en paralelo el mtodo alternante de $c34arz K$mitCJL* 6ue es un
mtodo con traslape entre las particiones# Un tratamiento pro0undo de la teor2a de los algoritmos de
$c34arz puede consultarse en K9ose-IL#
%6
*. >na aplicacin de la paraleli.acin con memoria distribuda
*.'.&. Algoritmo alternante de -c2;ar.
El algoritmo es conocido como el mtodo alternante de $c34arz en paralelo# Ga 0igura D#A muestra un
dominio D con 0rontera D* el cual %a a ser di%idido en dos particiones
D
.
5
D
,
#
D
,
D
.
D
,
D
D
D
.
#igura 2./. 3escomposicin de un dominio en dos particiones.
Ga 0igura D#D muestra las particiones traslapadas* en las cuales
D=D
.
D
,
#
I
,
I
.
D
.
I
.
D
,
I
,
#igura 2.2. )articiones traslapadas.
Gas 0ronteras
I
.
5
I
,
son 0ronteras arti0iciales 5 son la parte de las 0ronteras de
D
.
5
D
,
6ue estn en el
interior de D# Para resol%er una ecuacin di0erencial* siendo L un operador di0erencial* tenemos
L x=y en D*
x=b so+re D#
El mtodo alternante de $c34arz consiste en resol%er de cada particin de 0orma independiente* 0i)ando
condiciones de "iric3let en las 0ronteras arti0iciales de cada particin con los %alores de la iteracin
pre%ia de la particin ad5acente#
%&
*. >na aplicacin de la paraleli.acin con memoria distribuda
x
.
-
* x
,
-
aproximacines iniciales
e tolerancia
i nHmero de iteracin
mientras |x
.
i
x
.
i.
|>e 5 |x
,
i
x
,
i.
|>e
resol%er resol%er
L x
.
i
=y en D
.
L x
,
i
=y en D
,
x
.
i
=b en
D
.
I
.
x
,
i
=b en
D
,
I
,
x
.
i
- x
,
i.
I
.
en
I
.
x
,
i
- x
.
i.
I
,
en
I
,
i -i+.
0inWmientras
Algoritmo 2.. (todo alternante de Schwarz.
El algoritmo de+er iterar 3asta 6ue se satis0aga las condiciones de tolerancia#
*.'.'. Aplicacin con un problema de elemento 0inito
Cuando el operador L tiene una representacin como matriz* el algoritmo D#. corresponde a una
generalizacin :de+ido al traslape; del mtodo iterati%o tradicional (auss@$eidel por +lo6ues K$mitCJ
p.AL#
En pro+lemas de elemento 0inito* el traslape se realiza aumentando a cada particin elementos de la
particin ad5acente a partir de la 0rontera entre las particiones# Ga 0igura D#I muestra un e)emplo simple#
o
o
5
D
.
D
,
I
,
I
.
o
o
5
D
.
D
,
I
,
I
.
#igura 2.4. 3escomposicin con traslape de un dominio D con diferentes capas de traslape.
Gas 0ronteras %irtuales se 0ormarn con los nodos 6ue estn en la parte ms exterior del traslape# El
intercam+io de %alores ser entonces con los resultados encontrados en unos nodos 0antasma 6ue se
encontrarn en la particin ad5acente#
*.'.). <elocidad de convergencia
Ga %elocidad de con%ergencia al utilizar descomposicin de dominios se deteriora con0orme se aumenta el
nHmero de particiones K$mit3CJ pIAL# Esto puede %erse de 0orma 3eur2stica como sigue# Considerese el
dominio D de la 0igura D#J* el cual est di%idido en . particiones#
%'
*. >na aplicacin de la paraleli.acin con memoria distribuda
D
D
.
D
,
D
A
D
.
#igura 2.8. 3ominio dividido en . particiones.
En cada iteracin del metodo alternante de $c34arz solo trans0erir in0ormacin entre las particiones
ad5acentes# Entonces* si se tiene una condicin de 0rontera di0erente de cero en la primer particin* 5 se
inicia en la iteracin -* le tomar . iteraciones para 6ue la solucin local en la particin . sea di0erente
de cero# Por tanto* el algoritmo alternante de $c34arz impone l2mites en la %elocidad en la cual la
in0ormacin es trans0erida glo+almente a tra%s de todo el dominio#
El algoritmo de $c34arz t2picamente con%erge a una %elocidad 6ue es independiente :o ligeramente
dependiente; de la densidad de la malla 5 de la particin* cuando el traslape entre las particiones es
su0icientemente grande K$mit3CJ p?DL#
*.). 7articionamiento del dominio
/uestra idea es entonces particionar el dominio para resol%er cada particin en una computadora del
cluster* cada particin ser tratada como un pro+lema indi%idual de tamaFo reducido# Gocalmente cada
pro+lema indi%idual ser resuelto utilizando el mtodo de gradiente con)ugado paralelizado con memoria
compartida %isto en el cap2tulo A# Utilizaremos el es6uema MP8 de memoria distri+u2da para intercam+iar
el resultado en las 0ronteras arti0iciales entre las particiones* esto se 3ara iterati%amente siguiendo el
mtodo alternante de $c34artz# 9endremos as2 un sistema 32+rido 6ue com+ina los es6uemas de
procesamiento con memoria compartida 5 distri+u2da#
Vamos a mostrar como se realiza la particin del dominio con traslape necesario para implementar el
mtodo alternante de $c34arz* utilizando para ello un e)emplo sencillo de un pro+lema de elemento 0inito
en dos dimensiones con una malla de ,B elementos triangulares 5 ,A nodos# El dominio se di%idir en dos
particiones con una capa de traslape#
Ga malla es generada por el mdulo de pre@procesamiento del programa (i"* el cual permite generar la
geometr2a 5 entrega una ta+la de conecti%idades* la ta+la indica los nodos
n
.
, n
,
, n
A
6ue pertenecen a cada
elemento E* 0igura D#?# "enotaremos con negritas los nHmeros 6ue corresponden a elementos 5 sin
negritas los 6ue corresponen a nodos#
%)
*. >na aplicacin de la paraleli.acin con memoria distribuda
3
)
5
*
!
1, 10
1*
,
12 1
11
23
20 2)
13 22
1)
1! 2!
15
2*
2,
1
25 21 2
') '& &: &3 &*
''
&,
&'
5
:
'6
&)
&&
,
&5
3
*
)
&% &6 % ' &
/ n n n / n n n
1 &% &6 &5 15 * 3 %
2 & ) ' 1) 3 &) &5
3 ') '' '& 1* , : 5
! &* &3 : 1, 5 &3 &'
5 &: '& &, 1 5 &' &&
) &, '& '' 20 , 5 *
* &: &, &' 21 % ' *
, &' &, && 22 '6 &5 &)
&: &' &3 23 '' '6 &)
10 &3 5 : 2! ) , *
11 && &, &) 25 &6 % 3
12 &) &, '' 2) && * 5
13 && &) 3 2* &5 &6 3
1! && 3 * 2, ' ) *
#igura 2.:. (allado $ su representacin con conectividades.
Para realizar la particin inicial del dominio nuestro programa utiliza la li+rer2a de so0t4are ME98$
KQar5CCL* sta reci+e como entrada la ta+la de conecti%idades 5 un nHmero 6ue indica las particiones
re6ueridas# Ga 0igura D#B muestra el resultado entregado por esta li+rer2a* indicaremos los elementos de la
primer particin como EP
.
5 los de la segunda como EP
,
# Ga li+rer2a indica a 6ue particin pertenece cada
nodo* solo di%ide los elementos#
3
)
5
*
!
1, 10
1*
,
12 1
11
23
20 2)
13 22
1)
1! 2!
15
2*
2,
1
25 21 2
') '& &: &3 &*
''
&,
&'
5
:
'6
&)
&&
,
&5
3
*
)
&% &6 % ' &
/31 /32
3 1 1,
5 2 1
) ! 20
* 10 21
, 13 2!
1! 25
11 15 2)
12 1) 2*
22 1* 2,
23
#igura 2.;. Separacin de los elementos del mallado en dos particiones.
&uscando en la ta+la de conecti%idades determinamos 6ue nodos pertenecen a cada elemento en cada
particin# 8ndicaremos los nodos de la primer particin como nP
.
5 los de la segunda como nP
,
# Gos
nodos pueden pertenecer a ms de una particin* como se o+ser%a en la 0igura D#C#
3
)
5
*
!
1, 10
1*
,
12
1
11
23
20 2)
13
22
1)
1! 2!
15
2*
2,
1
25 21 2
') '& &:
&*
''
&,
5
:
'6
,
3
*
)
&% &6 % ' &
&3
&3
&'
&)
&&
&5
&'
&)
&&
&5
n7& n7'
&& & &6
&' ' &&
&) ) &'
&, * &)
&3 % &*
&5 , &%
&: 3 &3
'6 5 &5
'& :
''
')
#igura 2.<. *dentificacin de los nodos de cada particin.
Para de0inir 6u nodos pertencen a la 0rontera entre las particiones* +uscamos los nodos 6ue aparezcan en
ms de una particin# En el caso de la 0igura D#.-* 6ue aparezcan tanto en nP
.
como en nP
,
#
%*
*. >na aplicacin de la paraleli.acin con memoria distribuda
3
)
5
*
!
1, 10
1*
,
12 1
11
23
20 2)
13 22
1)
1! 2!
15
2*
2,
1
25 21 2
') '& &: &*
''
&,
5
:
'6 ,
3
*
)
&% &6 % ' &
&3
&'
&)
&&
&5
n7& n7'
&& & &6
&' ' &&
&) ) &'
&, * &)
&3 % &*
&5 , &%
&: 3 &3
'6 5 &5
'& :
''
')
#igura 2.D. 3efinicin de los nodos frontera entre las particiones.
partir de este momento di%idiremos la malla en el nHmero de particiones* la 0rontera de0inida
anteriormente seguir existiendo en cada su+@malla tendr una 0rontera* tal como se muestra en la 0igura
D#..* existen dos 0ronteras FP
.
5 FP
,
* en esta etapa am+as son iguales#
3
)
5
*
!
1, 10
1*
,
12
1
11
23
20 2)
13
22
1)
1! 2!
15
2*
2,
1
25 21 2
') '& &:
&*
''
&,
5
:
'6
,
3
*
)
&% &6 % ' &
&3
&3
&'
&)
&&
&5
&'
&)
&&
&5
87& 87'
&& &&
&' &'
&) &)
&3 &3
&5 &5
#igura 2.. 3ivisin de la malla en dos sub%mallas con dos fronteras.
umentar una capa de traslape signi0ica 6ue se agregarn a la su+@particin los elementos 6ue compartan
nodo en la 0rontera* pero 6ue no estn en dic3a su+@particin# Gos nodos de estos nue%os elementos 6ue
no estn en la su+@particin se agregarn 5 0ormarn la nue%a 0rontera* suplantando a la anterior# En la
0igura D#., se o+ser%a cmo se agrega una capa de traslape a cada particin* se denotan los elementos
agregados 5 la nue%a 0rontera 0ormada#
3
)
5
*
!
1, 10
,
12 1
11
23
2)
13 22
1)
1!
2*
1
') '& &:
''
&,
'6
5
:
3
*
&% &6
*
!
1, 10
1*
,
12 1
11
23
20 2)
13 22
1)
1! 2!
15
2*
2,
1
25 21 2
&*
5
:
,
3
*
)
&% &6 % ' &
&:
''
&,
'6
&3
&'
&)
&5
&'
&)
&&
&3
&5
&&
&*
87& 87'
* &,
3 &:
5 '6
: ''
&6
&*
&%
/31 /32
1 12 1 1*
3 13 2 1,
! 1! ! 1
5 1) * 20
) 1, , 21
* 1 22
, 22 10 23
23 11 2!
10 2) 12 25
11 2* 13 2)
1! 2*
15 2,
1)
n7& n7'
* &% & &'
3 &, ' &)
5 &3 ) &*
: &5 * &%
&6 &: % &,
&& '6 , &3
&' '& 3 &5
&) '' 5 &:
&* ') : '6
&6 ''
&&
#igura 2.+. Aumento de una capa de traslape en cada particin.
Este proceso se puede repetir tantas %eces como capas de traslape se deseen agregar a cada particin# Ga
0rontera 0inal ser la 0rontera arti0icial del mtodo alternante de $c34arz* en la cual se impondrn
condiciones de "iric3let antes de solucionar el sistema local de ecuaciones de la particin#
3ora es necesaria la renumeracin local a cada particin de elementos 5 nodos# Primero se renumeran
los elementos 5 en +ase a estos los nodos# Este paso es necesario 5a 6ue cada su+@malla se procesar por
separado como si se tratase de un pro+lema independiente# Ga 0igura D#.A muestra el reordenamiento para
nuestro e)emplo* las ta+las indican la numeracin local 5 glo+al* tanto de elementos como de nodos#
%%
*. >na aplicacin de la paraleli.acin con memoria distribuda
1
3
2
!
) 1*
15 1,
5
, 13
*
10
1!
11
1)
12
20
1
& ) *
'
%
&6
&*
&,
&'
&)
&3 &5
5
,
:
&&
3
&%
/31 / /31 /
1 3 11 13
2 5 12 1!
3 ) 13 1
! * 1! 2)
5 , 15 1,
) 1) 1)
* 11 1* !
, 12 1, 10
22 1 1
10 23 20 2*
n7& n n7& n
& ') &6 '6
' '' && &5
) '& &' 3
* &: &) *
% &, &* 5
, &' &% &*
3 && &, :
5 &3 &3 &%
: &) &5 &6
21
22 3
10 !
1
23 11
20
25
12 1)
5 2!
,
) 1!
*
1*
1,
1
15 13 2
3
&6
:
&,
&)
&*
%
& ' &% , *
&:
'6
&5
'&
&3
&'
&&
5
)
/32 / /32 /
1 1 1! 2!
2 2 15 25
3 ! 1) 2)
! 10 1* 2*
5 13 1, 2,
) 1! 1 ,
* 15 20 11
, 1) 21 *
1* 22
10 1, 23 12
11 1 2! 22
12 20 25 23
13 21
n7' n n7' n
& &% &' &)
' &6 &) 3
) &5 &* *
* & &% %
% ) &, ,
, ' &3 &'
3 &* &5 &,
5 &3 &: &:
: : '6 ''
&6 5 '& '6
&& &&
#igura 2./. Beenumeracin de elementos $ nodos.
Esta numeracin 0unciona +ien para sol%ers iterati%os :por e)emplo con gradiente con)ugado;* pero es
inadecuada para solvers directos como la 0actorizacin C3oles75# Cuando se aplica la 0actorizacin
C3oles75 a una matriz* la cantidad de nodos no cero en la matriz 0actor L depende del rden de los nodos
en la malla o lo 6ue es e6ui%alente* el rden de los renglones 5 columnas en la matriz de rigidez# Cuando
se utiliza el sol%er con 0actorizacin C3oles75 ser necesario agregar un paso extra 6ue imponga una
enumeracin de los nodos ms adecuada* para una descripcin ms extensa de este caso consultar el
cap2tulo I#
El paso 0inal es crear enlaces entre los nodos en la 0rontera arti0icial de cada su+@malla con su
correspondiente nodo 0antasma en la otra su+@malla# Estos enalces sern utilizados para intercam+iar
in0ormacin entre las particiones# $e tendrn una lista de nodos 0antasma para cada particin# Cada enlace
guarda dos datos* el 2ndice del nodo en la 0rontera arti0icial con la numeracin local 5 el 2ndice del nodo
0antasma con la numeracin correspondiente en la particin ad5acente# En la 0igura D#.D se muestran los
enlaces 0ormados entre los nodos en la 0rontera arti0icial 5 los nodos 0antasma en la otra particin#
%,
*. >na aplicacin de la paraleli.acin con memoria distribuda
1
3
2
!
) 1*
15 1,
5
, 13
*
10
1!
11
1)
12
20
1
& ) *
'
%
&6
&*
&,
&'
&)
&3 &5
21
22 3
10 !
1
23 11
20
25
12 1)
5 2!
,
) 1!
*
1*
1,
1
15 13 2
3
&6
:
&,
&)
&*
%
& ' &% , *
&:
'6
&5
'&
5
,
:
&&
&3
&'
&&
5
)
3
&%
"odo
0antasma
"odo en
la 0rontera
arti0icial
g7& n7& n7'
& &% 3
' &, :
) &* &6
* &) &*
% &' &)
, &5 '
3 &3 &
1
3
2
!
) 1*
15 1,
5
, 13
*
10
1!
11
1)
12
20
1
& ) *
'
%
&6
&*
&,
&'
&)
&3 &5
21
22 3
10 !
1
23 11
20
25
12 1)
5 2!
,
) 1!
*
1*
1,
1
15 13 2
3
&6
:
&,
&)
&*
%
& ' &% , *
&:
'6
&5
'&
5
,
:
&&
&3
&'
&&
5
)
3
&%
"odo
0antasma
"odo en
la 0rontera
arti0icial
g7' n7' n7&
& &: *
' &5 %
) '6 '
* '& &6
#igura 2.2. ,reacin de los enlaces hacia los nodos fantasma
Para realizar particionamientos con ms de dos particiones se re6uerir guardar una lista de enlaces por
cada particin con la 6ue se tenga una 0rontera arti0icial#
El e)ercicio de realizar el particionamiento del dominio en tres dimensiones es ms complicado de
%isualizar* pero se siguen exactamente los mismos pasos* la Hnica di0erencia es la cantidad de nodos por
elemento# Ga 0igura D#.I muestra el e)emplo de un dominio en tres dimensiones di%idido en .J
particiones con traslape#
#igura 2.4. E0emplo tridimensional de particionamiento con traslape.
%3
*. >na aplicacin de la paraleli.acin con memoria distribuda
*.*. Implementacin con M7I
Vamos a explicar de 0orma simpli0icada las rutinas de MP8 KMP8F-BL utilizadas en nuestra
implementacin del mtodo alternante de $c34arz# Vamos a mostrar el 0uncionamiento utilizando la
geometr2a de un arco +idimensional al cual se le 3a impuesto un desplazamiento en la parte superior
derec3a# Por +re%edad no %amos a presentar la sintaxis completa de las rutinas de MP8# Gas rutinas de
MP8 de en%io 5 recepcin de datos tienen la siguiente estructura
MP8WFunction( i , 3)*
donde i es el nodo al cual se en%ia o se 6uiere leer el dato o mensa)e 3# Gas 0unciones 6ue cu5o nom+re
comienza con 8 indican 6ue no se espera a 6ue los datos estn listos para en%iar o reci+ir*
MP8W80unction( i , 3)
esto permite continuar con la e)ecucin del programa# Ga sincronizacin de estos datos se dar cuando se
llame a la 0uncin
MP8WPaitall ( 3)#
.# El programa inicia con una geometr2a* una ta+la de conecti%idades 5 ciertas condiciones de 0rontera* 5
un nHmero ) 6ue indica la cantidad de particiones# Para el e)emplo de 0igura D#.J el programa se
instancia I %eces* asignndose el proceso con rango - como el maestro 5 los procesos . a D como
escla%os* es decir* tendremos D particiones# Cada nodo entra en el es6uema de MP8 llamando la rutina
MP8W8nit#
1aestro
MP8W8nit
/scla8os i=. ,., )
MP8W8nit
#igura 2.8. Entrada del programa.
,# En el nodo maestro se realiza un particionamiento con traslape siguiendo el procedimiento descrito en
la seccin anterior# $e generan las particiones con traslape* se reenumeran elementos 5 nodos* 0inalmente
se generan ta+las con los enlaces de los nodos 0antasma* 0igura D#.?#
%5
*. >na aplicacin de la paraleli.acin con memoria distribuda
#igura 2.:. )articionamiento del dominio con traslape.
A# Ea con las particiones independientes se generan los pro+lemas indi%iduales* cada uno tiene sus propias
condiciones de 0rontera# El nodo maestro entra en un ciclo i =.*., ) en el cual se en%ian los siguientes
datos correspondientes a cada particin i utilizando la 0uncin MP8W$end! N
i
coordenadas de los nodos*
E
i
ta+la de conecti%idades de los elementos* C
i
condiciones de 0ronteraS se en%ian en un ciclo 0=.*., )
con 0=i los L
i 0
enlaces con los indices de los nodos de 0rontera arti0icial 5 su correspondiente nodo
0antasma en la particin 0# Con la 0uncin MP8W8rec%( i , s
i
) se crea una peticin sin +lo6ueo del estatus
del nodo i* esto le permite al nodo maestro seguir en%iando datos sin esperar a 6ue los escla%os estn
listos# Por su parte cada escla%o utilizar la 0uncin MP8W'ec% para reci+ir todos estos datos# Cada
escla%o generar su sistema de ecuaciones 5 cuando est listo en%iar su estatus s
i
al nodo maestro# 9odo
esto es indicado en la 0igura D#.B#
Esclavo &
Esclavo &
Esclavo *
Esclavo *
Esclavo )
Esclavo )
Esclavo '
Esclavo '
Maestro
Maestro
1aestro
MP8W$end( i , N
i
)
MP8W$end( i , E
i
)
MP8W$end( i , C
i
)
MP8W$end( i , L
i 0
)
MP8W8rec%(i , s
i
)
MP8WPaitall ( s
i
)
/scla8os i=. ,., )
MP8W'ec%( -* N
i
)
MP8W'ec%( -* E
i
)
MP8W'ec%( -* C
i
)
MP8W'ec%( -* L
i 0
)
MP8W$end( -* s
i
)
#igura 2.;. ,reacin de problemas individuales.
Con la 0uncin MP8WPaitall ( s
i
) el nodo maestro espera el estatus de todos los escla%os antes de
continuar#
%:
*. >na aplicacin de la paraleli.acin con memoria distribuda
D# En este punto el programa comienza a iterar 3asta 6ue se logre la con%ergencia del algoritmo D#.# En
cada escla%o el sistema de ecuaciones es resuelto localmente# l terminar cada escla%o en%ia la di0erencia
entre la solucin anterior 5 la actual d
i
al nodo maestro* el cual e%alua la con%ergencia glo+al del
pro+lema# En caso de 6ue el pro+lema llegue a una con%ergencia se continuar al paso J# Ver 0igura D#.C#
Esclavo &
Esclavo &
Esclavo *
Esclavo *
Esclavo )
Esclavo )
Esclavo '
Esclavo '
Maestro
Maestro
1aestro
MP8W8rec%(i , d
i
)
MP8WPaitall ( d
i
)
/scla8os i=. ,., )
MP8W$end( -* d
i
)
#igura 2.<. Beporte del estado de la convergencia al nodo maestro.
I# $i aHn no se 3a logrado la con%ergencia glo+al* entonces los escla%os solicitarn los %alores en los
nodos 0antasma a cada una de las particiones ad5acentes con la 0uncin MP8W8rec%( 0 , G
i 0
)* con
0=.*., )* i =0* al mismo tiempo en%iara los %alores de los nodos 0antasma 6ue soliciten las otras
particiones con el la 0uncin MP8W8send( 0 , G
0 i
)* 0=.*., )* i =0# Con la 0uncin MP8WPait esperaran a
6ue todas las transacciones con las particiones ad5acentes 3a5an concluido# /tese en la 0igura D#,- 6ue
el nodo maestro no inter%iene en este paso#
Esclavo )
Esclavo )
Esclavo &
Esclavo &
Esclavo *
Esclavo *
Esclavo '
Esclavo '
Maestro
Maestro
/scla8os i=. ,., )
MP8W8rec%( 0 , G
i 0
)
MP8W8send( 0 , G
0 i
)
MP8WPaitall (G
i 0
)
MP8WPaitall (G
0 i
)
#igura 2.+D. @eneracin de la soluciones locales e intercambio de valores
en las fronteras artificiales con sus respectivos nodos fantasma.
,6
*. >na aplicacin de la paraleli.acin con memoria distribuda
$e regresa al paso D para continuar a la siguiente iteracin#
J# Una %ez 6ue se logre la con%ergencia el nodo maestro entrar en un ciclo i=. ,., ) 5 solicitar uno a
uno a los escla%os los resultados de desplazamiento u
i
* de0ormacin e
i
* 5 es0uerzos c
i
de cada particin#
Esto se indica en la 0igura D#,.#
Esclavo &
Esclavo &
Esclavo *
Esclavo *
Esclavo )
Esclavo )
Esclavo '
Esclavo '
Maestro
Maestro
1aestro
MP8W'ec%(i , u
i
)
MP8W'ec%(i , e
i
)
MP8W'ec%(i , c
i
)
/scla8os i=. ,., )
MP8W$end( -* u
i
)
MP8W$end( -* e
i
)
MP8W$end( -* c
i
)
#igura 2.+. Envio de resultados locales al nodo maestro.
?# El nodo maestro generar una solucin glo+al con)untando los resultados de todas las particiones*
0igura D#,,# Gos nodos salen del es6uema MP8 llamando la 0uncin MP8WFinalize#
1aestro
MP8WFinalize
/scla8os i=. ,., )
MP8WFinalize
#igura 2.++. ,onsolidacin de un resultado global.
,&
%. 8actori.acin C2oles=y simblica para
matrices ralas
%.&. Cmo lograr un solver directo e0iciente
El algoritmo 0actorizacin C3oles75 para resol%er sistemas de ecuaciones es computacionalmente mas
caro 6ue el mtodo de gradiente con)ugado* tanto en tiempo como en utilizacin de memoria# $in
em+argo* al tra+a)ar con el algoritmo alternante de $c34arz o+tendremos la %enta)a* de 6ue una %ez
0actorizado el sistema de ecuaciones* resol%er el sistema en cada iteracin de $c34arz consistir
simplemente en 3acer una sustitucin 3acia adelante 5 una 3acia atrs* lo cual es +astante rpido#
Ga ta+la I#. muestra los di0erentes costos de operacin 5 almacenamiento para matrices simtricas
KPissBD pJAL* siendo n el rango de la matriz* b el anc3o de +anda 5
r
i
el nHmero de elementos no cero de
la columna i de L#
1atriz 1ultiplicaciones ( di8isiones 6umas Almacenamiento
-im/trica completa
.
J
n
A
+
.
,
n
,
,
A
n
.
J
n
A
.
J
n
.
,
n
,
+
.
,
n
-im/trica bandada
.
,
b( b+A) n
.
A
b
A
b
,
,
A
b
.
,
b( b+.) n
.
A
b
A
.
,
b
,
.
J
b ( b+.) n
.
,
b
,
.
,
b
-im/trica rala
i=.
n.
r
i
(
r
i
+A
)
/ ,
i=.
n.
r
i
(
r
i
+.
)
/ , n+
i=.
n.
r
i
Tabla 4.. ,osto de operacin $ almacenamiento para diferentes tipos de matrices.
Para el caso del algoritmo de sustitucin 3acia atrs* los costos operacin se muestran en la ta+la I#,
KPissBD pJDL#
1atriz 1ultiplicaciones ( di8isiones 6umas
-im/trica completa n
,
n
,
n
-im/trica bandada ( ,b+.) nb
,
b ,b nb
,
b
-im/trica rala n+,
i=.
n.
r
i
,
i=.
n.
r
i
Tabla 4.+. ,osto de operacin del algoritmo de sustitucin hacia atrs.
"e+ido a la dependencia entre las %aria+les* no es sencillo paralelizar la 0actorizacin C3oles75 K1eatC.L*
sin em+argo* podemos aumentar el nHmero de particiones para as2 o+tener sistemas indi%iduales de menor
tamaFo* lo 6ue resultar a su %ez en una 0actorizacin ms rpida#
Utilizaremos dos estrategias para disminuir el uso de tiempo 5 memoria de la 0actorizacin C3oles75# Ga
primer estrategia es reordenar los renglones 5 columnas de la matriz del sistema de ecuaciones para
reducir el tamaFo de las matrices resultantes de la 0actorizacin# Ga segunda estrategia es utilizar la
,)
%. 8actori.acin C2oles=y simblica para matrices ralas
0actorizacin C3oles75 sim+lica para o+tener la 0actorizacin exacta 5 0ormar con esta matrices ralas
6ue no tengan elementos cero# Ga com+inacin de am+as estrategias reducir tanto el tiempo de e)ecucin
como la memoria utilizada#
%.'. 8actori.acin clsica de C2oles=y
Como antecedente %amos a descri+ir la 0actorizacin C3oles75 tradicional K=uar-- pB-L#
Un sistema de ecuaciones
A x=y* :I#.;
con una matriz AR
nn
simtrica positi%a de0inida puede ser resuelto aplicando a esta matriz la
0actorizacin C3oles75
A=L L
9
* :I#,;
donde L es una matriz triangular in0erior# Osta 0actorizacin existe 5 es Hnica K=uar-- pB-L#
Gas 0rmulas para determinar los %alores de L son
E
i 0
=
.
E
0 0
(
A
i 0
?=.
i.
E
i ?
E
0 ?
)
* para i >0 :I#A;
E
i i
=
.
A
i i
? =.
i.
E
i ?
,
# :I#D;
$ustitu5endo :I#,; en :I#.;* tenemos
L L
9
x=y*
3agamos z =L
9
x 5 entonces tendremos dos sistemas de ecuaciones
L z=y* :I#I;
L
9
x=z* :I#J;
con :I#I; se resuel%e para z 3aciendo una sustitucin 3acia adelante con
z
i
=
.
E
i ,i
(
$
i
? =.
i .
E
i ,?
z
?
)
5 con :I#J; resol%emos para x sustitu5endo 3acia atrs con
!
i
=
.
E
i , i
9
(
z
i
?=i+.
n
E
i , ?
9
!
?
)
#
,*
%. 8actori.acin C2oles=y simblica para matrices ralas
%.). Reordenamiento de renglones y columnas
%.).&. (escripcin del problema
l utilizar la 0actorizacin C3oles75 para resol%er sistemas de ecuaciones* donde A es una matriz
simtrica 5 positi%a de0inida* el primer paso es reordenar los renglones 5 las columnas de tal 0orma 6ue se
reduzca el nHmero de entradas no cero de la matriz 0actor L# "e0inamos la notacin j( L)* 6ue indica el
nHmero de elementos no cero de L#
Ga 0igura I#. muestra los elementos no cero :en negro; de un sistema de ecuaciones para un pro+lema de
elemento 0inito en dos dimensiones* el cual no 3a sido reordenado# la iz6uierda est la matriz de rigidez
A* con j( A)=.B.-* a la derec3a la matriz triangular in0erior L* con j( L)=B?,C* resultante de la
0actorizacin C3oles75 de A#
#igura 4.. Bepresentacin de los elementos no cero de una matriz A &iz5uierda' $ su
correspondiente factorizacin L &derecha'.
3ora %eamos en la 0igura I#, tenemos 6ue la matriz de rigidez AF con j( AF )=.B.- :con la misma
cantidad de elementos no nulos 6ue A; 5 su 0actorizacin LF tiene j( LF )=A,.I# m+as 0actorizaciones
permiten resol%er el mismo sistema de ecuaciones# Para determinar este reordenamiento utilizamos las
rutinas de la li+rer2a ME98$ KQar5CCL#
#igura 4.+. Bepresentacin de los elementos no cero de una matriz reordenada AF &iz5uierda'
$ su correspondiente factorizacin LF &derecha'.
,%
%. 8actori.acin C2oles=y simblica para matrices ralas
%.).'. Matrices de permutacin
"ada P una matriz de permutacin* las permutaciones :reordenamientos; de columnas del tipo
AF - P A*
o de rengln
AF - AP
solas destru5en la simetr2a de A K(oluCJ p.DBL# Para preser%ar la simetr2a de A solamente podemos
considerar reordenamiento de las entradas de la 0orma
AF - P AP
9
#
Es de notar 6ue esta permutaciones no mue%en los elementos 0uera de la diagonal a la diagonal# Ga
diagonal de P AP
9
es un reordenamiento de la diagonal de A#
"ado 6ue P AP
9
es adems simtrica 5 positi%a de0inida para cual6uier permutacin de la matriz P*
podemos entonces resol%er el sistema reordenado
( P AP
9
) ( P x)=( P y)#
Ga eleccin de P tendr un e0ecto determinante en el tamaFo de las entradas no cero de L# Calcular un
+uen reordenamiento de la matriz A 6ue minimice las entradas no cero de L es un pro+lema /P
completo KEannB.L* sin em+argo existen 3eur2sticas 6ue generan un reordenamiento acepta+le en un
tiempo reducido#
%.).). Representacin de matrices ralas como gra0os
Vamos a introducir algunas nociones de teor2a de gra0os para 3acer un anlisis de las operaciones con
matrices ralas# Un gra0o @=( G , E) consiste en un con)unto 0inito de nodos o %rtices G )unto con un
con)unto E de aristas* los cuales son pares no ordenados de %rtices# Un ordenamiento :o eti6uetado; o de
@ es simplemente un mapeo del con)unto .* ,*., . en G* donde . denota el nHmero de nodos de @# El
gra0o ordenado por o ser denotado como @
o
=( G
o
, E
o
)#
$ea A una matriz simtrica de . .* el gra0o ordenado de A* denotado por @
A
=( G
A
, E
A
) en el cual los
. %rtices de @
A
estn numerados de . a .* 5
!
i
, !
0
E
A
si 5 solo s2
a
i 0
=a
0 i
=-
* i =0# 6u2
!
i
denota el
nodo de G
A
con eti6ueta i# Ga 0igura I#A muestra un e)emplo#
|
V V V
V V V V
V V V
V V
V V V
V V V
Matriz A
(ra0o @
A
.
,
A
D
I
J
. , A D I J
& ' )
*
,
%
#igura 4./. 6na matriz $ su grafo ordenado, con H se indican las entradas no cero de AF.
Para cual6uier matriz de permutacin P=I* los gra0os no ordenados :o eti6uetados; de A 5 P AP
9
son
los mismos pero su eti6uetado asociado es di0erente# s2* un gra0o no eti6uetado de A representa la
,,
%. 8actori.acin C2oles=y simblica para matrices ralas
estructura de A sin sugerir un orden en particular# Esta representa la e6ui%alencia de las clases de matrices
P AP
9
# Entonces* encontrar una +uena permutacin de A e6ui%ale a encontrar un +uen ordenamiento
de su gra0o K(eorB.L# Ga 0igura I#D muestra un e)emplo#
|
V V
V V V V
V V V
V V V
V V V
V V V
Matriz P AP
9
, ' )
&
%
*
(ra0o @
P AP
9
.
,
A
D
I
J
. , A D I J
#igura 4.2. El grfico de la figura 4./ con diferente ordenamiento.
P denota una matriz de permutacin.
"os nodos ! , $G en un gra0o @( G , E) son ad5acentes si ! , $ rE# Para I G* el con)unto ad5acente
de I* denotado como ad5 (I )* es
ad) ( I )= !G I ! , $E para algHn $I #
En otras pala+ras* ad5 (I ) es simplemente el con)unto de nodos en @ 6ue no estn en I pero son
ad5acentes en al menos un nodo de I# Ga 0igura I#I muestra un e)emplo#
|
V V V
V V V V
V V V
V V
V V V
V V V
I =
!
.
, !
,
ad) ( I )=
!
A
, !
D
, !
J
.
,
A
D
I
J
. , A D I J
& ' )
*
,
%
gr
(
!
,)
=A
#igura 4.4. E0emplo de ad$acencia de un con0unto I G.
Para I G* el grado de I* denotado por gr ( I )* es simplemente el nHmero ad5 (I )* donde S denota el
nHmero de miem+ros del con)unto S# En el caso de 6ue se trate de un solo elemento* consideraremos
gr
(
!
,
)
=gr
(
!
,
)#
%.).*. Algoritmos de reordenamiento
Vamos a 3a+lar mu5 +re%emente de los algoritmos de reordenamiento# Ga 3eur2stica ms comHn utilizada
para realizar el reordenamiento es el algoritmo de grado m2nimo# El algoritmo I#. muestra una %ersin
+sica de ste K(eorB. p..JL#
,3
%. 8actori.acin C2oles=y simblica para matrices ralas
"ada un matriz A 5 su correspondiente gra0o @
-
i - .
repetir
En el gra0o de eliminacin
@
i.(
G
i.
, E
i. )* elegir un nodo
!
i
6ue tenga grado
m2nimo#
Formar el gra0o de eliminacin
@
i (
G
i
, E
i) como sigue!
Eliminar el nodo
!
i
de
@
i.
5 sus aristas inicidentes
gregar aristas al gra0o tal 6ue los nodos ad)
(
!
. ) sean pares ad5acentes en @
i
#
i - i+.
mientras i> G
Algoritmo 4.. (todo de grado m"nimo para reordenar grafos no dirigidos.
Cuando el grado m2nimo se presenta en %arios nodos* usualmente se elige uno de 0orma ar+itraria# El
e)emplo del reordenamiento o+tenido en la 0igura I#D se o+tiene aplicando el algoritmo de grado m2nimo
con la secuencia mostrada en la ta+la I#A#
ii .rafo de eliminacin @
i.
9odo
elegido
.rado
m#nimo
&
& ' )
*
,
%
* &
'
& ' )
, %
' '
)
& )
, %
) '
*
&
, %
% '
% & , & &
, , , 6
Tabla 4./. .umeracin usando el algoritmo de grado m"nimo.
Versiones ms a%anzadas de este algoritmo pueden consultarse en K(eorBCL#
3ora %amos a re%isar +re%emente el mtodo de diseccin anidada* el cual es ms apropiado para
matrices resultantes de pro+lemas de di0erencias 0initas 5 elemento 0inito# Ga principal %enta)a de este
,5
%. 8actori.acin C2oles=y simblica para matrices ralas
algoritmo comparado con el de grado m2nimo es la %elocidad 5 el poder predecir las necesidades de
almacenamiento# Ga ordenacin producida es similar a la del algoritmo de grado m2nimo#
Vamos a introducir la de0inicin de separador# El con)unto SG es un separador del gra0o conectado @ si
el gra0o seccin @( G S ) est desconectado# Por e)emplo* en la 0igura I#J se muestra 6ue
S=
!
A
, !
D
, !
I
es un separador de @* dado 6ue @( G S ) tiene tres componentes* los con)untos de nodos
!
.
*
!
,
5
!
J
, !
?
#
&
'
)
*
,
%
3
@
#igura 4.8. E0emplo de un con0unto separador S.
$ea A una matriz simtrica 5 @
A
su gra0o no dirigido asociado# Consideremos un separador S en @
A
*
cu5a remocin desconecta el gra0o en dos con)untos de nodos
,
.
5
,
,
# $i los nodos en S son numerados
despus de a6uellos de
,
.
5
,
,
* entonces se inducir una particin en la correspondiente matriz ordenada#
Ga o+ser%acin principal es 6ue los +lo6ues cero en la matriz continHan siendo cero despus de la
0actorizacin# Cuando es elegido apropiadamente* una su+matriz grande est garantizada de permanecer
cero# Ga idea puede ser aplicada recursi%amente* de tal 0orma 6ue los ceros puedan ser preser%ados en la
misma 0orma en las su+matrices#
,
.
,
,
S
|
A
.
- V
.
- A
,
V
,
V
.
9
V
,
9
A
S
0
-
?> 0
A
? 0
=-
* 0=..n :I#?;
como el con)unto de los 2ndices de los elementos no nulos de la columna 0 de la parte estrictamente
triangular in0erior de A#
"e 0orma anloga de0inimos para la matriz L* los con)untos
!
0
-
?>0
E
? 0
=-
* 0=..n# :I#B;
36
%. 8actori.acin C2oles=y simblica para matrices ralas
'e6ueriremos de con)untos
r
0
6ue sern usados para registrar las columnas de L cu5as estructuras
a0ectarn a la columna 0 de L#
para 0 - ..n
r
0
-
!
0
-
0
para
i r
0
!
0
- !
0
!
i
0
0in para
p -
min
i !
0
si !
0
=
0 otro caso
r
p
- r
p
0
0in para
Algoritmo 4./. #actorizacin ,holes?$ simblica.
Esta algoritmo de 0actorizacin sim+lica es mu5 e0iciente* la comple)idad en tiempo 5 espacio es de
orden C( j( L))#
Vamos a3ora a mostrar %isualmente como 0unciona la 0actorizacin sim+lica* sta puede ser %ista como
una secuencia de gra0os de eliminacin K(eorB. ppC,@.--L# "ado
"
-
=A
* podemos esta+lecer una
correspondencia entre una trans0ormacin de
"
-
a
"
.
como los cam+ios correspondientes en sus gra0os
respecti%os# "enotamos
"
-
por @
"
-
5
"
.
por @
"
.
# "ado un ordenamiento o implicado por @
A
*
denotemos el nodo o(i ) por
!
i
# Como se muestra en la 0igura I#B* el gra0o de
"
.
es o+tenido de
"
-
por!
.; Eliminar el nodo
!
.
5 sus aristas incidentes
,; gregar las aristas a el gra0o tal 6ue los nodos en
ad)
(
!
.
) sean pares ad5acentes en @
"
.
#
3&
%. 8actori.acin C2oles=y simblica para matrices ralas
@
"
-
& ' )
*
,
%
"
-
=
|
V V V
V V V V
V V V
V V
V V V
V V V
@
"
.
' )
*
, %
"
.
=
|
V V V _
V V V
V V
V V V
_ V V
@
"
,
) *
, %
"
,
=
|
V _ V _
_ V _
V V V
_ _ V V
@
"
A
*
, %
"
A
=
|
V _ _
_ V V
_ V V
@
"
D
, % "
D
=
|
V V
V V
@
"
I
,
"
I
=| V
#igura 4.;.Secuencia de grafos de eliminacin.
El gra0o llenado 5 su matriz correspondiente se muestran en la 0igura I#C* las entradas nue%as se indican
con _# $ea L la matriz triangular 0actor de la matriz A# "e0inamos el gra0o llenado de @
A
como el gra0o
simtrico @
F
=( G
F
, E
F
)* donde F=L+L
9
# s2 el con)unto de aristas E
F
consiste de todas las aristas en
E
A
)unto con todos las aristas agregadas durante la 0actorizacin# >+%iamente G
F
=G
A
#
& ' )
*
,
%
@
F
F=L+L
9
=
|
V V V
V V V V _
V V _ V _
V _ V _ _
V _ V V
V _ _ _ V V
O
n
o
r
m
(
C