Está en la página 1de 105

Centro de Investigacin en Matemticas A.C.

Maestra en Ciencias con Especialidad en


Computacin y Matemticas Industriales
Clculo de Estructuras Utilizando
Elemento Finito con Cmputo en Paralelo
por
Jos Miguel Vargas Flix
sesor! "r# $al%ador &otello 'ionda
(uana)uato* a+ril de ,-.-
Resumen
/uestro tra+a)o trata so+re la solucin numrica de pro+lemas de de0ormacin lineal de slidos por medio
del mtodo de elementos 0initos* estos pro+lemas se resuel%en utilizando estratgias de cmputo en
paralelo# 1a+lamos so+re algunas 0ormas de paralelizar los algoritmos* tanto utilizando modelos de
memoria compartida como de memoria distri+u2da#
En particular nos centraremos en la descomposicin de dominios usando el mtodo alternante de $c34arz
para resol%er pro+lemas de elemento 0inito con mallas mu5 re0inadas# El mtodo alternante de $c34arz se
re0iere a particionar el dominio del pro+lema de tal 0orma 6ue 3a5a traslape en las 0ronteras comunes de
las particiones# Cada particin se resuel%e como un pro+lema independiente* despus se intercam+ian
%alores en las 0ronteras con las particiones ad5acentes# Este proceso se repite de 0orma iterati%a 3asta la
con%ergencia glo+al del pro+lema# 1a+laremos de la paralelizacin utilizando dos tipos de algoritmos
para resol%er los sistemas de ecuaciones resultantes! gradiente con)ugado 5 0actorizacin C3oles75#
En cuanto a la 0actorizacin C3oles75* explicaremos %arias estratgias para 3acerla ms e0iciente* como
son! almacenamiento utilizando es6uemas de matrices ralas* 0actorizacin C3oles75 sim+lica para
determinar la estructura de la matriz antes de calcular sus entradas 5 el reordenamiento de la matiz de
rigidez para o+tener una 0actorizacin ms econmica#
$e descri+e en esta tesis la implementacin de un programa de cmputo 6ue utiiliza la descomposicin de
$c34arz para resol%er pro+lemas de de0ormacin de slidos en dos 5 tres dimensiones# Este programa 0ue
implementado para 0uncionar en un cluster de computo con el o+)eti%o de resol%er pro+lemas de gran
escala en 0orma e0iciente# Finalmente mostraremos algunas gr0icas de tiempos o+tenidas al resol%er
sistemas de ecuaciones con decenas de millones de %aria+les#
Palabras clave: Ecuaciones diferenciales parciales, descomposicin de dominios, lgebra lineal,
cmputo en paralelo, mtodo de elemento finito, mtodo alternante de Schwarz.
Agradecimientos
En primera instancia 5 de 0orma general 6uiero agradecer al C8M9* es un gran lugar para crecer* tanto en
0orma acadmica* como en 0orma personal# Es una comunidad 0antstica de la cual reci+2 inconta+le
apo5o# En part2cular a3ora 6uiero decir gracias al "r# $al%ador &otello por compartir su conocimiento 5
experiencia* por todo el apo5o 6ue me +rind# dems de asesorar 5 guiar con por +uen camino esta tsis*
consigui los recursos :+ecas* cursos 5 3ard4are; necesarios para lle%arla a ca+o# los re%isores "r#
rturo 1ernndez guirre 5 "r# Miguel <ngel Mreles Vz6uez* por sus %aliosos comentarios 5
opiniones# gradezco tam+in a Jose Jesus 'oc3a =uezada 6uien 0ue el encargado poner a punto el
cluster de cmputo en el cual se implement esta tesis#
l "r# Juan Jos 9apia rmenta por su inters en este tra+a)o de tsis 5 por tomarse el tiempo de leer 5
en%iarme comentarios* los cuales 0ueron de gran a5uda#
Apoyos recibidos
"urante el tiempo en 6ue realic mis estudios de maest2a reci+2 apo5os en 0orma de +ecas* sin los cuales
no 3u+iese sido posi+le la conclusin de estos 5 el desarrollo de esta tsis#
Centro de Investigacin en Matemticas (CIMAT
>ctu+re a diciem+re de ,--?# rt,- @ 888 @ &eca de estudios de Maestr2a :cta ,--?@-.A;
Enero de ,--B# rt,- @ 888 @ &eca de estudios de Maestr2a :cta ,--B@--.;
gosto a diciem+re de ,--C# rt.C@ V8@ &eca de ela+oracin de tesis de Maestr2a :cta ,--C@-..;
Conse!o "acional de Ciencia y Tecnologa (Conacyt
Enero de ,--B a )ulio de ,--C# Con%ocatoria de &ecas Conac5t /acionales enero @ )ulio ,--B#
/o%iem+re a diciem+re de ,--C# Pro5ecto de 8n%estigacin BAC?D@E
A los implicados
#ndice $eneral
Resumen................................................................................................................................................. 3
Agradecimientos.................................................................................................................................... 5
Apoyos recibidos.................................................................................................................................. %
Centro de Investigacin en Matemticas (CIMAT...........................................................................%
Conse!o "acional de Ciencia y Tecnologa (Conacyt.....................................................................%
1. Introduccin....................................................................................................................................... 11
&.&. Motivacin.................................................................................................................................... &&
&.'. (istribucin de los captulos......................................................................................................... &&
&.). Modelos de cmputo en paralelo................................................................................................. &'
&.*. Avance del cmputo en paralelo.................................................................................................. &)
&.%. +as matemticas del paralelismo................................................................................................. &*
&.,. -obre el estado del arte............................................................................................................... &%
&.,.&. (iscreti.acin con el m/todo de elementos 0initos...............................................................&%
&.,.'. (escomposicin de dominios............................................................................................... &,
&.,.). (ominios sin traslape1 complemento de -c2ur.....................................................................&3
&.,.*. M/todos "eumann4"eumann...............................................................................................&5
&.,.%. M/todos (iric2let4(iric2let.................................................................................................... '6
2. Deformacin elstica de slidos con el mtodo de los elementos finitos....................................23
'.&. Elasticidad bidimensional............................................................................................................. ')
'.&.&. Es0uer.os y de0ormaciones.................................................................................................. ')
'.&.'. 7rincipio de traba!os virtuales............................................................................................... '*
'.&.). (iscreti.acin en elementos 0initos....................................................................................... '%
'.&.*. 8unciones de 0orma.............................................................................................................. ',
'.&.%. (iscreti.acin de los campo de de0ormaciones y es0uer.os.................................................'3
'.&.,. Ecuaciones de e9uilibrio de la discreti.acin........................................................................':
'.&.3. Ensamblado de la matri. de rigide.......................................................................................)6
'.'. Elasticidad tridimensional............................................................................................................. )'
'.'.&. Es0uer.os y de0ormaciones.................................................................................................. )'
'.'.'. 8unciones de 0orma.............................................................................................................. )*
'.'.). (iscreti.acin de los campo de de0ormaciones y es0uer.os.................................................)%
'.'.*. Ecuaciones de e9uilibrio de la discreti.acin........................................................................)3
3. Una aplicacin de la paralelizacin con memoria compartida......................................................3
).&. Introduccin................................................................................................................................. ):
).'. Ar9uitectura del procesamiento en paralelo.................................................................................):
).). 7araleli.acin con t2reads........................................................................................................... *&
).*. Algoritmo de gradiente con!ugado................................................................................................*'
).%. 8ormulacin en paralelo............................................................................................................... **
:
Agradecimientos
).,. Implementacin con matrices ralas.............................................................................................. *,
).3. Resultados................................................................................................................................... *,
!. Una aplicacin de la paralelizacin con memoria distri"u#da.......................................................!
*.&. 7araleli.acin con memoria distribuida........................................................................................ *:
*.'. (escomposicin de dominios....................................................................................................... %6
*.'.&. Algoritmo alternante de -c2;ar........................................................................................... %&
*.'.'. Aplicacin con un problema de elemento 0inito.....................................................................%'
*.'.). <elocidad de convergencia................................................................................................... %'
*.). 7articionamiento del dominio....................................................................................................... %)
*.*. Implementacin con M7I.............................................................................................................. %5
5. $actorizacin %&oles'( sim"lica para matrices ralas..................................................................)3
%.&. Cmo lograr un solver directo e0iciente........................................................................................ ,)
%.'. 8actori.acin clsica de C2oles=y............................................................................................... ,*
%.). Reordenamiento de renglones y columnas..................................................................................,%
%.).&. (escripcin del problema..................................................................................................... ,%
%.).'. Matrices de permutacin...................................................................................................... ,,
%.).). Representacin de matrices ralas como gra0os....................................................................,,
%.).*. Algoritmos de reordenamiento.............................................................................................. ,3
%.*. 8actori.acin C2oles=y simblica................................................................................................ 36
%.%. Implementacin............................................................................................................................ 3)
%.%.&. En dos dimensiones............................................................................................................. 3)
). Resultados......................................................................................................................................... **
,.&. 7reparacin.................................................................................................................................. 33
,.'. (escomposicin de dominio y gradiente con!ugado....................................................................35
,.'.&. $radiente con!ugado paraleli.ado........................................................................................ 35
,.'.'. $radiente con!ugado sin paraleli.ar..................................................................................... 56
,.). (escomposicin de dominio y 0actori.acin C2oles=y simblica.................................................56
,.*. Evolucin y convergencia............................................................................................................ 5&
,.%. (istribucin de tiempo.................................................................................................................. 5)
,.,. Traslape....................................................................................................................................... 5*
,.3. A0inidad del C7>.......................................................................................................................... 5*
,.5. -istemas ?grandes@...................................................................................................................... 5%
,.:. >n caso particular con malla estructurada...................................................................................5,
,.:.&. (istribucin de tiempos del algoritmo...................................................................................53
*. %onclusiones ( tra"a+o futuro.......................................................................................................... ,
-i"liograf#a............................................................................................................................................ 1
Apndice A. .u#a para &acer prue"as................................................................................................ 3
8orma combinada.............................................................................................................................. :)
7articiones independientes................................................................................................................ :,
Apndice -. /+emplo de e+ecucin en un cluster............................................................................103
Apndice %. .eneracin de mallas grandes.................................................................................... 105
&6
&. Introduccin
&.&. Motivacin
lgunos pro+lemas modelados con elemento 0inito re6uieren de una discretizacin mu5 0ina para reducir
el grado de error* lo cual implica utilzar una gran cantidad de recursos de cmputo para poder ser
resueltos# En particular nos en0ocamos en pro+lemas de elemento 0inito resultantes de la modelacin de la
de0ormacin elstica de slidos en dos 5 tres dimensiones# $ucede entonces 6ue el tamaFo de las matrices
resultantes de esta modelacin 0ina son tan grandes 6ue no es 0acti+le almacenarlas en la memoria de una
sola computadora* adems* el tiempo 6ue se tarda en encontrar la solucin del sistema de ecuaciones
puede ser demasiado extenso como para resultar prctico# Go 6ue nos lle%a a cam+iar de paradigma de
programacin 5 en0ocarnos en el cmputo en paralelo* con el cual 3acemos 6ue mHltiples computadoras
tra+a)en de 0orma cooperati%a en la resolucin de este tipo de pro+lemas#
&.'. (istribucin de los captulos
8niciaremos ms adelante en este cap2tulo 3a+lando de 0orma +re%e del cmputo en paralelo* tanto de
3ard4are 5 so0t4are* la moti%acin matemtica de ste 5 3aremos una intruduccin a la tcnica de
descomposicin de dominios 3a+lando +re%emente del estado del arte de ste#
El orden de los cap2tulos siguientes tiene 6ue %er con la 0orma en 6ue se 0ue atacando el pro+lema# Con el
cap2tulo , descri+iremos la teor2a de de0ormacin elstica de slidos con elementos 0initos#
En el cap2tulo A descri+iremos la paralelizacin de dic3o programa utilizando el es6uema de memoria
compartida utilizando como solver el mtodo de gradiente con)ugado en paralelo* presentamos algunos
resultados#
continuacin* en el cap2tulo D* 3a+laremos de la teor2a e implementacin un es6uema 32+rido* 6ue
com+ina los es6uemas de memoria distri+uida 5 memoria compartida# En pocas pala+ras* lo 6ue 3acemos
es particionar el dominio de un pro+lema de elementos 0initos para as2 0ormar pro+lemas independientes
6ue estn relacionados entre s2 a tra%s de condiciones de 0rontera comunes# Cada pro+lema
independiente se resuel%e utilizando el sol%er descrito en el cap2tulo A# Gas soluciones locales a cada
particin se com+inan con las de las particiones ad5acentes de 0orma iterati%a 3asta lograr una
con%ergencia# Mostramos algunos resultados 5 denotamos algunos de los pro+lemas de este es6uema
32+rido#
&&
&. Introduccin
Para sol%entar los pro+lemas encontrados con el es6uema 32+rido* decidimos implementar como solver
del sistema de ecuaciones la 0actorizacin C3oles75 sim+lica para matrices ralas# En el cap2tulo I
mostramos la teor2a 5 detalles de implementacin de este sol%er#
l utilizar la 0actorizacin C3oles75 para matrices ralas como sol%er para el es6uema de memoria
distri+uida implementado se o+tu%ieron resultados interesantes* los cuales son mostrados en el cap2tulo J#
$e inclu5e al 0inal de este tra+a)o un apndice con los detalles del programa de so0t4are 6ue implementa
los algoritmos descritos en los cap2tulos A a I#
&.). Modelos de cmputo en paralelo
El modelo ms comHn para clasi0icar las ar6uitecturas de cmputo en paralelo es la taxonom2a de Fl5nn
KFl5n?,L# Esta taxonom2a agrupa las di0erentes ar6uitecturas de computadoras +asndose en el 0lu)o de
datos e instrucciones en una computadora* denotando si se puede o no procesar datos 5Mo e)ecutar
instrucciones en paralelo* lo 6ue da como resultado las cuatro categor2as de la ta+la .#.#
Una
instruccin
12ltiples
instrucciones
Un
dato
-I-( MI-(
12ltiples
datos
-IM( MIM(
Tabla .. Ta!onom"a de #l$nn.
$8$" :single instruction, single data;# En este modelo no existe paralelismo ni de procesamiento de datos
ni de e)ecucin de instrucciones# $e re0iere entonces al procesamiento serial encontrado en las
computadoras con un solo procesador#
$8M" :single instruction, multiple data;# Este tipo de computadoras tienen arreglos de procesadores 6ue
e)ecutan la misma secuencia de instrucciones en datos di0erentes# Gas tar)etas de %ideo modernas o (PUs
se +asan en este modelo* cada una puede tener decenas o cientos de procesadores 6ue pueden* por
e)emplo* aplicar la misma operacin a muc3as entradas de una matriz al mismo tiempo# El diseFo de este
tipo de 3ard4are lo 3ace especialmente e0iciente para operaciones sencillas* pero no lo es tanto cuando
los algoritmos presentan condiciones de la 0orma! si el dato es e)ecuta esta instruccin* si es & esta otra#
Este tipo de condicionantes no son 0ciles de paralelizar* lo 6ue resulta en 6ue en estos casos se e)ecute
primero la instruccin para 5 luego la instruccin para & de 0orma serial#
M8$" :multiple instruction, single data;# Es el caso menos comHn de esta taxonom2a* en l mHltiples
procesadores tra+a)an en paralelo pero en un mismo dato# Este tipo de ar6uitectura se utiliza en sistemas
6ue tienen 6ue operar a prue+a de 0allos* en los cuales es necesario tener redundancia# Por e)emplo la
computadora de control de %uelo del trans+ordador espacial utiliza esta ar6uitectura#
M8M" :multiple instruction, multiple data;# En este caso se tienen muc3os procesadores* cada uno
e)ecutando una secuencia de instrucciones aplicada a datos di0erentes# Por e)emplo* las computadoras de
escritorio multi% core siguen esta ar6uitectura# Gos sistemas distri+uidos tam+in se consideran dentro de
esta clase* tanto si utilizan es6uemas de memoria compartida o distri+uida# Es la ar6uitectura ms
&'
&. Introduccin
utilizada en computacin cient20ica de alto rendimiento* la ma5or2a de las computadoras en la lista
9>PI--* utilizan este es6uema#
&.*. Avance del cmputo en paralelo
En aFos recientes se 3a logrado un a%ance exponencial en cuanto a la capacidad de procesamiento* de los
procesadores* como se muestra en la 0igura .#.#
&:36 &:3% &:56 &:5% &::6 &::% '666 '66% '6&6
6EA6
&EA&6
'EA&6
)EA&6
*EA&6
%EA&6
,EA&6
3EA&6
5EA&6
I
n
t
e
l

*
6
6
*
(
:
'
B

i
p
s

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
$

5 el %ector de 0uerzas msicas como


b=
|
b
!
b
$

*
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
$

Fuerzas nodales de e6uili+rio q


i
=
|
6
i
7
i

Fuerzas nodales exteriores P


i
=
|
)
! i
)
$ i

#igura +.4. #uerzas sobre un elemento triangular de tres nodos.


Partiendo de la suposicin de 6ue el e6uili+rio del elemento se esta+lece Hnicamente en los nodos*
podemos de0inir unas 0uerzas puntuales de 6ue actHen so+re los nodos 6ue e6uili+ren las 0uerzas de+idas
a la de0ormacin del elemento 5 al resto de las 0uerzas 6ue actHan so+re el mismo# 1acemos entonces uso
del principio de tra+a)os %irtuales :,#?; aplicado a3ora al elemento
||
A
e
6e
9
c t dA
e

||
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

#igura +.:. .umeracin global $ local al ensamblar la matriz elemental.


Gos %alores se sumarn a la matriz de rigidez K 5 al %ector f * como se muestra en la 0igura ,#B#
)&
'. (e0ormacin elstica de slidos con el m/todo de los elementos 0initos
|
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 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 1 1 1 1
1 1 1 1 9
..
e
9
.,
e
1 1 9
.I
e
9
.J
e
1 1 1 1 1 1 9
.A
e
9
.D
e
1
1 1 1 1 9
,.
e
9
,,
e
1 1 9
,I
e
9
,J
e
1 1 1 1 1 1 9
,A
e
9
,D
e
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 1 1 1
1 1 1 1 9
I.
e
9
I,
e
1 1 9
II
e
9
IJ
e
1 1 1 1 1 1 9
IA
e
9
ID
e
1
1 1 1 1 9
J.
e
9
J,
e
1 1 9
JI
e
9
JJ
e
1 1 1 1 1 1 9
JA
e
9
JD
e
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 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 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 1 1 1 1 1 1 1
1 1 1 1 9
A.
e
9
A,
e
1 1 9
AI
e
9
AJ
e
1 1 1 1 1 1 9
AA
e
9
AD
e
1
1 1 1 1 9
D.
e
9
D ,
e
1 1 9
DI
e
9
DJ
e
1 1 1 1 1 1 9
DA
e
9
DD
e
1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

|
1
1
1
1
u
.
e
u
,
e
1
1
u
I
e
u
J
e
1
1
1
1
1
1
u
A
e
u
D
e
1

=
|
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

#igura +.;. Ensambla0e de la matriz elemental en la matriz de rigidez.


Una condicin de 0rontera de "iric3let*
u
i
0i)o* implicarn eliminar el i@simo rengln 5 la i@sima
columna de la matriz de rigidez 5 el i@simo rengln del %ector # Para poder 3ace esto* 3a5 6ue compensar
en el %ector f de esta 0orma
( f )
0
- ( f )
0
( K )
i 0
( u)
0
* \ 0 =i
Ga matriz de rigidez resultante no tendr un anc3o de +anda prede0inido#
'.'. Elasticidad tridimensional
Ga 0ormulacin de los elementos 0initos tridimensionales es anloga a la 0ormulacin +idimensional* por
lo cual %amos a descri+irla +re%emente# 9ra+a)aremos a3ora con elementos en tres dimensiones* en
particular con tetraedros con cuatro nodos#
'.'.&. Es0uer.os y de0ormaciones
8niciamos de0iniendo el %ector de desplazamientos
u( ! , $ , z)=
|
u( ! , $ , z)
v( ! , $ , z)
w( ! , $ , z)

#
)'
'. (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

representa los desplazamientos de un nodo i#


8ntroduciendo las 0unciones de interpolacin
u ( ! , $ , z)=

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

5 el %ector de 0uerzas msicas como


b=
|
b
!
b
$
b
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

#igura 4.:. El efecto de un con0unto separador S en una matriz.


Esta procedimiento aplicado de 0orma de 0orma recursi%a se conoce como algoritmo de diseccin anidada
generalizado KGipt??L#
Ga idea es tratar de di%idir el gra0o tratando de 6ue sean de igual tamaFo con un separador pe6ueFo# Para
encontrar este separador se +usca generar una estructura grande 5 entonces elegir un separador de un
ni%el medio# Este es un algoritmo recursi%o 6ue emplea la estrategia de di%ide 5 %encers* a continuacin
descri+imos el algoritmo#
$ea S una clase de gra0os cerrados en los cuales se cumple el teorema del separador
.n KGipt?CL# $ean o*
constantes asociadas con el teorema del separador 5 sea @( G , E) un gra0o de n nodos en S# El algoritmo
recursi%o I#, numera los nodos de @ tal 6ue la eliminacin gaussiana rala :0actorizacin C3oles75 rala; es
e0iciente# El algoritmo supone 6ue l de los nodos de @ 5a contienen nHmeros asignados* cada uno de los
,:
%. 8actori.acin C2oles=y simblica para matrices ralas
cuales es ms grande 6ue b :se explica ms adelante;# El o+)eti%o es numerar los nodos restantes de @
consecuti%amente de a a b#
$ea dado @( G , E)
inicio
si @
(

( .o)
)
,
Gos nodos son ordenados ar+itrariamente de a a b :puede utilizarse el algoritmo de
grado m2nimo;
siWno
Encontrar con)untos A* - 5 , 6ue satis0agan el teorema del separador .n* donde ,
es el con)unto separador# l remo%er , se di%ide el resto de @ en dos con)untos A
5 - los cuales no tienen 6ue ser conexos# $ea A conteniendo i nodos no
numerados* - contiene 0 5 , contiene ? nodos no numerados#
/umerar los nodos no numerados en , de 0orma ar+itraria de b?+. a b* es decir*
estamos asignando a los nodos de , los nHmeros ms grandes#
Eliminar todos las aristas cu5as conexiones estn am+as en ,#
plicar el algoritmo recursi%amente al su+gra0o inducido por -, para numerar
los nodos no numerados en - de a -b?0+. a b -b?#
plicar el algoritmo recursi%amente al su+gra0o inducido por A, para numerar
los nodos no numerados en - de a -b?0i+. a b -b?0#
0inWsi
0in
Algoritmo 4.+. Algoritmo de diseccin anidada generalizado.
$e inicia el algoritmo I#, con todos los nodos de @ no numerados* con a -.* b -n 5 l --# Esto enumerar
los nodos en @ de . a n# En este algoritmo los nodos en el separados son incluidos en la llamada recursi%a
pero son no numerados#
Una %ersin me)orada de este algoritmo es la empleada en la li+rer2a ME98$ KQar5CCL* sta es la 6ue
3emos utilizado en la implementacin de nuestro programa#
%.*. 8actori.acin C2oles=y simblica
Cuando tra+a)amos con matrices grandes 5 ralas* es mu5 costoso calcular directamente L utilizando :I#A;
5 :I#D;* un me)or mtodo es determinar 6ue elementos de L son distintos de cero 5 llenarlos utilizando
entonces :I#A; 5 :I#D;# El algoritmo para determinar los elementos distintos cero en L se le denomina
0actorizacin sim+lica K(allC- pBJ@BBL#
Para una matriz rala A* de0inamos

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

#igura 4.<. Besultado de la secuencia de eliminacin.


3'
%. 8actori.acin C2oles=y simblica para matrices ralas
%.%. Implementacin
%.%.&. En dos dimensiones
Ga gr0ica I#. muestra los resultados o+tenidos con la implementacin del algoritmo de 0actorizacin
C3oles75 sim+lica para la solucin de un pro+lema de elemento 0inito en dos dimensiones# Como
comparacin extra se muestran los tiempos de solucin utilizando el algoritmo de gradiente con)ugado sin
paralelizar# l igual 6ue en la implementacin del mtodo del gradiente con)ugado* se utiliza el mtodo de
compressed row storage para el almacenamiento de las matrices ralas# Para realizar estas mediciones se
utiliz una malla regular* como la de la 0igura I#.-* con di0erentes densidades de malla#
#igura 4.D. (allado de e0emplo.
/o es posi+le mostrar un comparati%o con una 0actorizacin clsica de C3oles75 para un matriz completa*
dado 6ue la cantidad de memoria utilizada aHn para matrices de tamaFo reducido es excesi%a# Por
e)emplo* para una matriz de .--*---x.--*--- entradas se necesitar2an D- giga+5tes de memoria :con
do+le precisin;#
6 %61666 &661666 &%61666 '661666 '%61666 )661666
6
&1666
'1666
)1666
*1666
%1666
C2oles=y
(primer versin
C2oles=y
(segunda versin
$radiente con!ugado
C2oles=y
(<ersin 0 inal
"Emero de renglones de la matri.
T
i
e
m
p
o

H
s
I
@rfica 4.. ,omparativo de tiempos de solucin.
3)
%. 8actori.acin C2oles=y simblica para matrices ralas
Una %ez implementada la primer %ersin se realiz un anlisis de los cuellos de +otella del algoritmo I#A#
El primer cuello de +otella 0ue en el llenado de las columnas
!
0
# Para reducir el tiempo tratando de
minimizar el uso de memoria usamos una matriz de +its triangular in0erior 6ue almacena %alores true si la
entrada existir en L 5 false en caso contrario# Como me)ora posterior se cam+i el 0ormato de sta matriz
a s?$% line* con lo 6ue se logr una reduccin en el uso de memoria en la 0actorizacin sim+lica en
aproximadamente un JJ^#
Ga segunda %ersin del algoritmo se toma en cuenta la modi0icacin del cuello de +otella 6ue da+a el
ma5or tiempo de procesamiento* la ecuacin :I#A; en la +Hs6ueda de las entradas
E
0 ?
# Para me)orar la
+Hs6ueda se opt por reordenar las entradas de los los elementos de las matrices ralas en +ase a sus
2ndices# $i los 2ndices de las entradas por rengln no son ordenadas* se tendr un costo de +Hs6ueda de la
entrada de orden C( n) en el peor caso# l ordenar 5 aplicar un algoritmo de +Hs6ueda +inaria* se redu)o el
costo de la +Hs6ueda a un orden
C
(
log
,
n
) en el peor caso# 9enemos la %enta)a 6ue* para el caso de
multiplicacin matriz %ector* el orden de +Hs6ueda sigue siendo C(.)# Esto es por6ue no se 3ace una
+Hs6ueda sino 6ue se toman los elementos de cada rengln uno tras otro#
Ga %ersin 0inal del algoritmo tiene considera+le me)ora con respecto a la segunda %ersin# $e modi0ic el
acceso a las entradas
E
i ?
5
E
0 ?
de tal 0orma 6ue no se 3icieran +Hs6uedas# El algoritmo 0inal recorre los
2ndices de los renglones i 5 0 de la matriz rala L* tomando en cuenta slo los 2ndices comunes para
calcular :I#A;# Una %ista a detalle de la gr0ica I#. es mostrada en la gr0ica I#,#
6 %61666 &661666 &%61666 '661666 '%61666 )661666
6
%6
&66
&%6
'66
'%6
)66
C2oles=y
(primer versin
C2oles=y
(segunda versin
$radiente con!ugado
C2oles=y
(<ersin 0 inal
"Emero de renglones de la matri.
T
i
e
m
p
o

H
s
I
@rfica 4.+. 3etalle del comparativo de tiempos de solucin.
Ga identi0icacin de estos cuellos de +otella 5 su correccin reducen el tiempo de solucin del algoritmo
como se muestra en la gr0ica I#.# $e logr 6ue la solucin de los sistemas de ecuaciones utilizando la
0actorizacin C3oles75 sim+lica sea ms rpida 6ue la solucin con gradiente con)ugado#
Ga gr0ica I#A indica la utilizacin de memoria comparando el algoritmo 0inal de 0actorizacin C3oles75
sim+lica con respecto al gradiente con)ugado#
3*
%. 8actori.acin C2oles=y simblica para matrices ralas
6 %6666 &66666 &%6666 '66666 '%6666 )66666
6
'6616661666
*6616661666
,6616661666
56616661666
&166616661666
$radiente con!ugado
C2oles=y
"Emero de renglones de la matri.
M
e
m
o
r
i
a

u
t
i
l
i
.
a
d
a

H
b
y
t
e
s
I
@rfica 4./. ,omparativo de utilizacin de memoria de los algoritmos de gradiente con0ugado $ ,holes?$.
Es claro 6ue el algoritmo de 0actorizacin C3oles75 utiliza muc3a ms memoria 6ue el gradiente
con)ugado#
3%
,. Resultados
,.&. 7reparacin
Ga ta+la J#. resume las caracter2sticas del cluster de cmputo con el cual se realizaron las prue+as 6ue se
muestran a continuacin#
9odo 1aestro 7rocesadorJ AM( Kuad Core Lpteron ')%6 ME (5 cores
MemoriaJ )' $F
(isco (uroJ -ATA '%6 $F1 &666$F
%luster 1
1) 9odos /scla8os
7rocesadorJ ' C AM( Kuad Core Lpteron ')%6 ME (5 cores
MemoriaJ &' $F
(isco (uroJ -ATA &,6 $F
%luster 2
15 9odos /scla8os
7rocesadorJ Intel(R Deon(R C7> E%%6' (* cores
(isco (uroJ -ATA &,6 $F
MemoriaJ &, $F
Red -;itc2 -MCJ *5 ptos & $bps
6istema operati8o Roc=s Cluster +inuC %.) (,* bits
%ompiladores $CC *.*.) (con soporte para LpenM7 C1 CAA1 8ortran
:i"rer#a 13I Lpen M7I &.*.&
;otal "Ecleos de procesamiento (C7>J &:'
Capacidad en memoriaJ *** $F
Capacidad en disco J ,&'6 $F
Tabla 8.. ,aracter"sticas del cluster de prueba.
0in de poder %alorar la escala+ilidad de las estratgias de solucin se utilz un solo pro+lema para 3acer
prue+as* ste es mostrado en la 0igura J#.#
#igura 8.. 3escripcin del problema patrn &i5uierda problema, derecha solucin'.
El pro+lema consiste en arco en dos dimensiones compuesto de un solo material* las condiciones de
0rontera impuestas son! las +ases del arco estn 0i)as* en la parte superior derec3a se impone un
33
,. Resultados
desplazamiento %ertical# l pro+lema se le generarn mallas de elemento 0inito con di0erentes grados de
re0inamiento 5 se resol%er utilizando di%ersas estratgias* las cuales se descri+en a continuacin#
,.'. (escomposicin de dominio y gradiente con!ugado
Ga siguiente prue+a se e0ectu utilizando una de las computadoras del Cluster , del C8M9# El
siguiente resultado consiste en el pro+lema de la 0igura J#. mallado en A]CJ-*.-- elementos con .]CBI*AA.
nodos* es decir un sistema de A]C?-*JJ, de ecuaciones# El resultado de este pro+lema se muestra en la
0igura J#,#
#igura 8.+. 3iagrama del resultado del problema de e0emplo en dos dimensiones.
Ga primer columna de la gr0ica J#. muestra el resultado de este pro+lema* utilizando una sola
computadora del cluster :sin descomposicin de dominio; resol%iendo el sistema de ecuaciones completo
utilizando gradiente con)ugado paralelizado con D CPUs con memoria compartida* el tiempo 6ue tard en
resol%er el sistema 0ue de B,#J, minutos# Este resultado nos ser%ir como una re0erencia de cunto ms
e0iciente es la solucin del pro+lema utilizando descomposicin de dominios#
,.'.&. $radiente con!ugado paraleli.ado
En las siguientes prue+as se sigui utilizando el Cluster , del C8M9* utilizamos las .D computadoras
del cluster* cada una con cuatro procesadores* lo 6ue nos da un total de IJ CPUs#
En la segunda columna de la gr0ica J#. mostramos el resultado de utilizar el es6uema 32+rido en una
descomposicin de dominios de .D particiones :una por nodo; con ,- capas de traslape* utilizando como
sol%er el gradiente con)ugado paralelizado en cada computadora con D CPUs con memoria compartida# El
tiempo total para resol%er el sistema 0ue de CD.#-, minutos# Es decir* ..#AB %eces ms lento 6ue el
resultado de la primer columna#
35
,. Resultados
$.C. paralelo (.(. con $.C. (&*
particiones
(.(. con $.C. (%,
particiones
6.66
&66.66
'66.66
)66.66
*66.66
%66.66
,66.66
366.66
566.66
:66.66
&666.66
5'.,'
:*&.6'
)''.)*
Tiempo total
T
i
e
m
p
o

H
m
I
@rfica 8.. ,omparacin de estrategias.
El pro+lema 6ue encontramos con este es6uema es 6ue el tiempo 6ue re6uiere el gradiente con)ugado
para con%erger es mu5 di0erente en cada una de las particiones# Gas gr0icas de la 0igura J#A muestran la
carga de procesamiento durante ,. iteraciones de $c34arz en dos nodos del cluster* el ms e0iciente 5 el
menos e0iciente* a la iz6uierda 5 a la derec3a respecti%amente# En el nodo ms e0iciente se %e 6ue despus
de terminar de resol%er el sistema tiene periodos de +a)a acti%idad* durante este tiempo este nodo est
esperando 6ue los otros nodos terminen# En comparacin* el nodo menos e0iciente tarda ms en resol%er
el sistema de ecuaciones* al ser el ms lento no muestra periodos de espera* en la gr0ica se aprecia 6ue
est tra+a)ando continuamente# El nodo menos e0iciente alenta a todos los nodos del cluster#

#igura 8./. 3iferencia de carga en los nodos ms eficiente &iz5uierda' $ menos eficiente &derecha'
Como resultando tenemos un gran des+alance de carga 6ue 3ace 6ue la ma5or2a de los procesos estn
inacti%os casi un I-^ del tiempo Esto pro%oca 6ue la e0iciencia de operacin del cluster se reduzca
signi0icati%amente* como se aprecia en la 0igura J#D* la cual muestra el ni%el de operacin de todo del
cluster#
3:
,. Resultados
#igura 8.2. 3etalle del traba0o de ,)6 general del cluster.
,.'.'. $radiente con!ugado sin paraleli.ar
3ora con una con0iguracin di0erente* %amos a utilizar la descomposicin de dominio utilizando el
gradiente con)ugado no paralelizado* para esto di%idiremos el dominio en IJ particiones con ,- capas de
traslape* un sol%er por cada CPU del cluster# Ga tercer columna de la gr0ica J#. muestra el tiempo
o+tenido de A,,#AD minutos# Casi la tercera parte del tiempo con en comparacin del con gradiente
con)ugado paralelizado* pero aHn cuatro %eces ms lento 6ue la %ersin sin descomposicin de dominio#
l tener particiones ms pe6ueFas* 5 por lo tanto sistemas de ecuaciones ms pe6ueFos el des+alance de
carga se 3ace menor* aun6ue sigue siendo la causa principal de la poca e0iciencia de esta estrategia#
,.). (escomposicin de dominio y 0actori.acin C2oles=y
simblica
Entre ms pe6ueFo sea el sistema de ecuaciones ms e0iciente ser la resolucin por 0actorizacin
C3oles75* es por eso 6ue en %ez de utilizar .D particiones* como en el caso con gradiente con)ugado
paralelizado* utilizaremos IJ particiones :una por cada procesador del cluster; con ,- capas de traslape#
Ga gr0ica J#, muestra dos resultados* la columna de la iz6uierda es la misma 6ue la de la primer columna
de la gr0ica J#. :es la solucin del sistema sin descomposicin de dominio utilizando una sola
computadora con D procesadores 5 aplicando el algoritmo de gradiente con)ugado en paralelo;# la
derec3a el resultado de utilizar descomposicin de dominios utilizando como sol%er la 0actorizacin
C3oles75 para matrices ralas mostrada en el cap2tulo I#
56
,. Resultados
$.C. paralelo (.(. con C2oles=y (%,
particiones
6
&6
'6
)6
*6
%6
,6
36
56
:6
5'.,'
,.)*
Tiempo total
Tiempo de
0 actori.acin
T
i
e
m
p
o

H
m
I
@rfica 8.+. ,omparacin de estrategias.
El tiempo utilizando gradiente con)ugado en paralelo en una computadora 0ue de B,#J, minutos* el tiempo
con descomposicin de dominio 5 0actorizacin C3oles75 en .D computadoras 0ue de J#AD minutos# $e
tu%o la solucin aproximadamente .A %eces ms rpido# Esto se de+e a 6ue el tiempo por iteracin
$c34arz es mu5 reducido* 5a 6ue solo se resuel%en dos matrices triangulares con sustitucin 3acia atrs 5
3acia adelante en cada particin# El a3orro en tiempo es nota+le#
,.*. Evolucin y convergencia
continuacin* en la 0igura J#I* mostramos un e)emplo de la e%olucin de las iteraciones del mtodo
alternante de $c34arz en el pro+lema de la 0igura J#. di%idido en A?- elementos 5 ,AC nodos* utilizando
cuatro particiones con dos capas de traslape#
#igura 8.4. E0emplo de evolucin en las primeras ocho iteraciones.
5&
,. Resultados
Ga gr0ica J#A muestra la con%ergencia d
i
de cada particin* medida como la norma ponderada de la
di0erencia entre la solucin actual 5 la anterior
d
i
=
|
u
t .
i
u
t
i
|
|
u
t
i
|
*
donde u
t
i
es el %ector de desplazamiento resultante de resol%er el sistema de ecuaciones de la particin i#
El criterio de paro esta+lecido para el mtodo alternante de $c34arz es cuando d
i
. !.-
D
para
i =.,., D#
6),:
&
'
&
%
&
5
'
&
'
*
'
3
)
6
)
)
)
,
)
:
*
'
*
%
*
5
%
&
%
*
%
3
,
6
,
)
,
,
,
:
3
'
3
%
3
5
&E43
&E4,
&E4%
&E4*
&E4)
&E4'
&E4&
&EA6
&EA&
7& 7' 7) 7*
Iteration
n
o
r
m
(
C
N

4

C

O
n
o
r
m
(
C

@rfica 8./. Evolucin de la convergencia.


En pro+lemas con mallas ms grandes se %en otro tipo de e0ectos# Gos siguientes resultados muestran la
e%olucin de la con%ergencia del pro+lema de la 0igura J#. di%idido en A`CJ-*.-- elementos 5 .`CBI*AA.
nodos :A`C?-*JJ, ecuaciones;* utilizando A- particiones# En la gr0ica J#D se %e la e%olucin con una capa
de traslape# Esta es interesante* se %e 6ue en las primeras iteraciones 3a5 unos picos donde empeora la
con%ergencia en algunas particiones* para despus me)orar#
@rfica 8.2. Evolucin de la convergencia con una capa de traslape.
5'
,. Resultados
Ga gr0ica J#I se %e la e%olucin del mismo pro+lema* pero utilizando siete capas de traslape# En sta se
o+ser%a 6ue los %alores de la con%ergencia d
i
presentan los mismos picos pero de 0orma ms temprana#
@rfica 8.4. Evolucin de la convergencia con siete capas de traslape.
,.%. (istribucin de tiempo
Ga gr0ica J#J muestra la distri+ucin de tiempos en dada iteracin de $c34arz con el pro+lema de la
0igura J#. di%idido en A`CJ-*.-- elementos 5 .`CBI*AA. nodos :A`C?-*JJ, ecuaciones;* utilizando AA
particiones# El tiempo necesario para la transmisin de datos no es notorio#
c
o
m
p
u
t
e
4
6
4
6
c
o
m
p
u
t
e
4
6
4
&
c
o
m
p
u
t
e
4
6
4
'
c
o
m
p
u
t
e
4
6
4
)
c
o
m
p
u
t
e
4
6
4
*
c
o
m
p
u
t
e
4
6
4
%
c
o
m
p
u
t
e
4
6
4
,
c
o
m
p
u
t
e
4
6
4
3
c
o
m
p
u
t
e
4
6
4
:
c
o
m
p
u
t
e
4
6
4
&
6
c
o
m
p
u
t
e
4
6
4
&
&
c
o
m
p
u
t
e
4
6
4
&
'
c
o
m
p
u
t
e
4
6
4
&
)
c
o
m
p
u
t
e
4
6
4
&
*
c
o
m
p
u
t
e
4
6
4
&
%
c
o
m
p
u
t
e
4
6
4
&
,
c
o
m
p
u
t
e
4
6
4
&
3
c
o
m
p
u
t
e
4
6
4
&
5
c
o
m
p
u
t
e
4
6
4
&
:
c
o
m
p
u
t
e
4
6
4
'
6
c
o
m
p
u
t
e
4
6
4
'
&
c
o
m
p
u
t
e
4
6
4
'
'
c
o
m
p
u
t
e
4
6
4
'
)
c
o
m
p
u
t
e
4
6
4
'
*
c
o
m
p
u
t
e
4
6
4
'
%
c
o
m
p
u
t
e
4
6
4
'
,
c
o
m
p
u
t
e
4
6
4
'
3
c
o
m
p
u
t
e
4
6
4
'
5
c
o
m
p
u
t
e
4
6
4
)
&
c
o
m
p
u
t
e
4
6
4
)
'
6.6
*.6
5.6
&'.6
&,.6
'6.6
Pait 0 or start -endOreceive g2ostsQ data -olver -end solution di0 0 erence to master
T
i
m
e

H
s
I
@rfica 8.8. 3istribucin de tiempo del algoritmo.
$e o+ser%a 6ue el tiempo utilizado por el sol%er %ar2a en cada nodo* todos los nodos tienen 6ue esperar al
sol%er ms lento* el del nodo .J en este caso#
5)
,. Resultados
,.,. Traslape
Gos siguientes resultados son para un pro+lema de dos dimensiones con A`CJ-*.-- elementos 5 .`CBI*AA.
nodos :A`C?-*JJ, ecuaciones;* di%idido en I, particiones resuelto con 0actorizacin C3oles75 sim+lica#
;raslape
;olerancia
1<10
=!
1<10
=5
) &6.*) )'.)5
, :.', '%.%:
: :.,: ''.'%
&' :.:& '6.)&
&% &6.)% &:.*'
&5 &6.3* &5.3:
'& &&.'5 &5.*'
'* &&.5, &5.3'
6 % &6 &% '6 '%
6
%
&6
&%
'6
'%
)6
)%
)'.)5
'%.%:
''.'%
'6.)&
&:.*'
&5.3:
&5.*'
&5.3'
&6.*)
:.',
:.,:
:.:&
&6.)%
&6.3*
&&.'5
&&.5,
&E4* &E4%
Capas de traslape
T
i
m
e

H
m
I
@rfica 8.:. Eficiencia en tiempo variando las capas de traslape entre las particiones.
,.3. A0inidad del C7>
Uno de los pro+lemas ms importantes 6ue encontramos al realizar prue+as asignando procesos a todos
los CPU de una computadora es 6ue la intercomunicacin con >penMP8 entre estos procesos es realizada
utilizando memoria compartida monitoreada con polling. 0in de ser e0iciente* >penMP8 3ace un polling
mu5 intenso* en el orden de microsegundos por peticin# Para mantener este monitoreo* >penMP8 crea
5*
,. Resultados
%arios threads* el pro+lema es 6ue estos threads* 6ue pueden lle%ar el uso del CPU al .--^* son
asignados por el sistema operati%o para e)ecutarse en los otros CPU de la computadora* lo 6ue alenta en
gran medida los procesos asignados pre%iamente a estos CPU# Como todos los procesos crean t3reads
para comunicarse con los otros procesos en la misma computadora se produce una ca2da de la e0iciencia
considera+le al inter0erirse entre ellos#
Ga solucin 6ue encontramos 0ue esta+lecer la a0inidad a los procesos a un CPU* de esta 0orma los t3reads
creados por este proceso se e)ecutarn en el mismo CPU 6ue el proceso# "e tal 0orma 6ue si un proceso
espera datos no inter0erir con los procesos 6ue aHn estn realizando clculos#
Encontramos dos 0ormas de esta+lecer la a0inidad de CPU* una es utilizando el programa tas7set* 6ue es
parte de las utiler2as del 7ernel de Ginux# Este programa permite asignar a un proceso un CPU
determinado* encerrando sus threads en el mismo CPU# Ga segunda 0orma es utilizando una modalidad
de >penMP8 en la cual es posi+le asignar a cada proceso* utilizando su nHmero de rango* un CPU en
particular del cluster#
Este pro+lema no aparece cuando se implementa el es6uema 32+rido de descomposicin de dominios
utilizando como sol%er el gradiente con)ugado paralelizado con memoria compartida# Esto se de+e a 6ue
el >penMP8 slo se crea un proceso en cada computadora no se re6uiere comunicacin con memoria
compartida 5 polling#
,.5. -istemas ?grandes@
Gos siguientes resultados se siguen re0iriendo al pro+lema de la 0igura J#.# Ga ta+la J#, muestra di%ersos
resultados al generar mallas cada %ez ms re0inadas* lo 6ue signi0ica sistemas de ecuaciones cada %ez ms
grandes#
Gos tiempos son dados en 3oras# Ga columna de la memoria se re0iere a la memoria total utilizada por
todos los nodos* tanto el nodo maestro :6ue es dnde se carga 5 distri+u5e el pro+lema; como los nodos
escla%o :dnde se resuel%en los pro+lemas indi%iduales;# Cada particin :o pro+lema indi%idual; se
resol%i utilizando un CPU# El nHmero de capas de traslape se eligi de 0orma eur2stica 3aciendo %arias
prue+as tratando de encontrar un +uen %alor 6ue diese un tiempo de solucin reducido#
/cuaciones ;iempo >&? 1emoria >.-? 3articiones ;raslape 3%s
)1:361,,' 6.&' &3 %' &' &)
&*1*661'*, 6.:) *3 %' &6 &)
)'1)::16*5 &.,6 &&6 ,6 &3 &%
*&1'%,1%'5 '.)5 &*' ,6 &% &%
,)1*531':6 *.:) '&% 5* &3 ':
351)361*,, %.%: '3& &66 '6 ':
5'16))1'6, %.&) '5% &66 '6 ':
Tabla 8.+. Besultados para sistemas de ecuaciones de diferente tamaJo.
Gos primeros cuatro resultados se o+tu%ieron utilizando el Cluster ,# Para los siguientes tres casos se
utilizaron en con)unto el Cluster . 5 el Cluster ,# Ga gr0ica J#B permite comparar %isualmente el
tamaFo del sistema de ecuaciones contra el tiempo de solucin#
5%
,. Resultados
)1:361,,' &*1*661'*, )'1)::16*5 *&1'%,1%'5 ,)1*531':6 351)361*,, 5'16))1'6,
6
&
'
)
*
%
,
6.&
6.:
&.,
'.*
*.:
%.,
%.&
"Emero de ecuaciones
T
i
e
m
p
o

H
2
o
r
a
s
I
@rfica 8.;. ,omparativo de n>mero de ecuaciones contra tiempo de solucin del problema.
,.:. >n caso particular con malla estructurada
El programa 6ue utilizamos para generar las mallas no nos permiti generar mallas ms re0inadas para el
pro+lema de la 0igura J#.* por lo 6ue creamos un pro+lema ms simple utilizando una malla estructurada
regular* de esta 0orma s2 pudimos generar una malla con ms elementos* 0igura J#J# Gas condiciones de
0rontera para este caso son! las es6uinas in0eriores 0i)as 5 en toda la parte superior se impone un
desplazamiento# El pro+lema de .--`-,-*--, de ecuaciones se resol%i en , 3oras 5 DJ minutos :CCJD#C
segundos;# $e utilizanron en con)unto el Cluster . 5 el Cluster ,#

ElementosJ &66Q6661666
"odosJ %6Q6&6166&
7articiones (* por ':J &&,
TraslapeJ '6
ToleranciaJ 6.666&
/cuaciones@ 100A020B002
Memoria (maestroJ '%.5 $F
Memoria (cada esclavoJ 5.) $F
Memoria (totalJ ',6.6 $F
Ecuaciones por esclavoJ &Q66*15&,
#igura 8.8. (alla simple para este e0emplo
5,
,. Resultados
,.:.&. (istribucin de tiempos del algoritmo
En la ta+la J#A mostramos como se distri+u5 el tiempo de solucin del pro+lema en cada una de las
etapas del programa de cmputo#
/tapa ;iempo >s?
Cargar problema &%&.3
7articionar malla (&&, particiones &''6.)
Ensamblar sistemas &.%
Iniciali.ar esclavos &)'.5
8actori.acin &:5%.6
Iteraciones de -c2;ar. (),3' de &.)5's cOu %*5).%
$uardar resultado ::'.:
;otal )!.
Tabla 8./. Tiempos de e0ecucin por etapa.
Estos resultados se pueden comparar ms 0acilmente en la gr0ica J#C#
Cargar problema 'R
7articionar malla &'R
Ensamblar sistemas 6R
Iniciali.ar esclavos &R
8actori.acin '6R
Iteraciones de -c2;ar. %%R
$uardar resultado &6R
@rfica 8.<. 3istribucin de tiempos en la solucin.
Visto de otro modo* podemos decir 6ue en total se resol%ieron D,I*CI, sistemas de .`--D*B.J ecuaciones
cada uno :en promedio;* en un tiempo de , 3oras DJ min#
53
3. Conclusiones y traba!o 0uturo
El gradiente con)ugado en paralelo con >penMP presenta mu5 +uenos resultados con 3asta B
procesadores* con ms de B se degrada demasiado la e0iciencia* esto es de+ido a 6ue no es 0acti+le 6ue
todos los procesadores utilicen el +us de datos al mismo tiempo* lo 6ue crea cuellos de +otella* lo 6ue da
lugar tiempos de espera mu5 grandes#
El es6uema de $c34arz 0unciona mu5 +ien de+ido a 6ue el tr0ico de in0ormacin entre los nodos es mu5
reducido# $e encontr adems 6ue se puede me)orar el tiempo de con%ergencia signi0icati%amente
aumentando la cantidad de capas de traslape entre las particiones#
Es complicado e%aluar la e0iciencia de la descomposicin de dominios para elementos 0initos en
pro+lemas con mallas mu5 irregulares# 1emos encontrado 6ue cuando las particiones 6ueda con 0ronteras
pe6ueFas se me)ora la %elocidad de con%ergencia# Pero* si una particin tiene ms condiciones de 0rontera
de "iric3let* entonces con%erge ms rpido* esto crea un des+alance de cargas* lo 6ue alenta el tiempo de
con%ergencia a una solucin glo+al# Para e%itar este pro+lema 3a+r2a 6ue implementar un mallador 6ue
sea ms inteligente* para 6ue ste pueda decidir donde ser2a me)or colocar las 0ronteras 5 me)orar el
+alance de cargas#
Encontramos 6ue el utilizar el es6uema de descomposicin de dominios con un sol%er directo
:0actorizacin C3oles75 sim+lica; aun6ue costoso al momento de 0actorizar es mu5 e0iciente al momento
de resol%er los sistemas en cada iteracin# Ga gran des%enta)a de este mtodo es 6ue se utiliza muc3a
memoria# Ga cantidad de memoria est relacionada a la cantidad de conecti%idades 6ue tenga la malla
generada al discretizar con elemento 0inito#
Osta es una alternati%a para resol%er pro+lemas de gran escala cuando se dispone de la memoria su0iciente
para poder 0actorizar las matrices#
El programa desarrollado slo permite 3acer mallados con tringulos o tetraedros* estos son los tipos de
elementos 6ue aun6ue permiten mallar geometr2as comple)as* generan mallas con el ma5or nHmero de
interconexiones# Creemos 6ue* para geometr2as sencillas* se lograr2a una me)or e0iciencia en el programa
si se utilizaran cuadrilteros o 3exaedros con el 0in de o+tener matrices ms ralas 5 por lo tanto ms
rpidas de resol%er 5 con un menor consumo de memoria#
Ga parte ms necesaria a me)orar es el particionador* actualmente se utilizan las rutinas de ME98$* pero
este tiene la des%enta)a de crear las particiones tratando de igualar la cantidad de elementos en cada una#
Go 6ue se necesita es crear un particionador 6ue di%ida las particiones considerando el nHmero de
conecti%idades de cada una# l tener todas las particiones un nHmero seme)ante de conecti%idades se
generarn sistemas de ecuaciones ralos con un nHmero seme)ante de elementos distintos de cero* lo 6ue
en este tipo de pro+lemas en paralelo se traducir en un me)or +alance de carga#
$e est tra+a)ando para extender el uso de estas rutinas a otros pro+lemas de elemento 0inito* por e)emplo*
para resol%er las ecuaciones de /a%ier@$to7es con 0luidos multi@0sicos en medios porosos#
5:
Fibliogra0a
[Bote0! $# &otello* 1# Es6ueda* F# (mez* M# Moreles* E# >Fate# Mdulo de plicaciones del Mtodo
de los Elementos Finitos* MEF8 .#-# (uana)uato* Mxico# ,--A#
["hap0#! &# C3apman* (# Jost* '# %an der Pas# Using >penMP! Porta+le $3ared Memor5 Parallel
Programming# 93e M89 Press* ,--B#
[$%&e'! E# F# "]ze%edo* V# G# Ei)73out* C# 1# 'omine# Con)ugate (radient lgorit3ms 4it3 'educed
$5nc3ronization >%er3ead on "istri+uted Memor5 Multiprocessors# Gapac7 Por7ing /ote
IJ# .CCA#
[$ohr0! "o3rmann C# '# Preconditioner 0or $u+structuring &ased on Constrained Energ5
Minimization# $8M Journal o0 $cienti0ic Computing# Volume ,I@.* pp# ,DJ@,IB* ,--A#
[$rep0(! U# "repper# P3at E%er5 Programmer $3ould Qno4 +out Memor5# 'ed 1at* 8nc# ,--?#
[)sch'(! 1# Esc3enauer* /# >l3o00* P# $c3nell# pplied $tructural Mec3anics# $pringer* .CC?#
[*arh0+! C# Far3at* M# Gesoinne* P# Ge 9allec* Q# Pierson* "# 'ixen# FE98@"P! dual@primal uni0ied
FE98 met3od @ part 8! 0aster alternati%e to t3e t4o@le%el FE98 met3od# 8nternational Journal
o0 /umerical Met3ods Engeneering* Vol I-# pp.I,Aa.IDD* ,--.#
[*l,n(-! M# Fl5nn* $ome Computer >rganizations and 93eir E00ecti%eness* 8EEE 9ransactions on
Computers#* Vol# C@,.* pp# CDB* .C?,#
[.all'0! Q# # (alli%an* M# 9# 1eat3* E# /g* J# M# >rtega* &# P# Pe5ton* '# J# Plemmons* C# 1#
'omine* # 1# $ame3* '# (# Voigt* Parallel lgorit3ms 0or Matrix Computations* $8M*
.CC-#
[.eor#+! # (eorge* J# P# 1# Giu# Computer solution o0 large sparse positi%e de0inite s5stems#
Prentice@1all* .CB.#
[.eor#'! # (eorge* J# P# 1# Giu# 93e e%olution o0 t3e minimum degree ordering algorit3m# $8M
'e%ie4 Vol A.@.* pp .@.C* .CBC#
[.olu'/! (# 1# (olu+* C# F# Van Goan# Matrix Computations# 93ird edidion# 93e Jo3ns 1op7ins
Uni%ersit5 Press* .CCJ#
[0eat'+! M 9# 1eat3* E# /g* &# P# Pe5ton# Parallel lgorit3ms 0or $parse Ginear $5stems# $8M
'e%ie4* Vol# AA* /o# A* pp# D,-@DJ-* .CC.#
[1ar,''! (# Qar5pis* V# Qumar# Fast and 1ig3l5 =ualit5 Multile%el $c3eme 0or Partitioning 8rregular
(rap3s# $8M Journal on $cienti0ic Computing* Vol# ,-@.* pp# AIC@AC,* .CCC#
[1imn0/a! J# 1# Qimn* M# $ar7is# >&""! >%erlapping +alancing domain decomposition met3ods and
generalizations to t3e 1elm3oltz e6uation# Proceedings o0 t3e .Jt3 8nternational Con0erence
on "omain "ecomposition Met3ods* ,--I#
:&
Fibliogra0a
[1imn0/b!J# 1# Qimn* &# &ourdin# /umerical 8mplementation o0 >%erlapping &alancing "omain
"ecomposition Met3ods on Unstructured Mes3es# Proceedings o0 t3e .Jt3 8nternational
Con0erence on "omain "ecomposition Met3ods* ,--I#
[2ipt((! '# J# Gipton* "# J# 'ose* '# E# 9ar)an# (eneralized /ested "issection* Computer $cience
"epartment* $tan0ord Uni%ersit5* .CC?#
[2ipt('! '# J# Gipton* '# E# 9ar)an# $eparator 93eorem 0or Planar (rap3s# $8M Journal on ppliend
Mat3ematics* Vol# AJ@,* .C?C#
[2i03! J# Gi* ># Pidlund# FE98@"P* &""C* and +loc7 C3oles75 met3ods# 8nternational Journal 0or
/umerical Met3ods in Engineering# Vol# JJ@,* pp# ,I-@,?.* ,--J#
[4and'! J# Mandel# &alancing "omain "ecomposition# Communications on /umerical Met3ods in
Engineering# Vol# C pp ,AA@,D.* .CCA#
[4and0-! J# Mandel* C# '# "o3rmann# Con%ergence o0 a +alancing domain decomposition +5
constraints and energ5 minimization# Journal o0 /umerical Ginear lge+ra 4it3 pplications*
Vol# .-@?* pp# JAC @ JIC#
[4and03! J# Mandel* C# '# "o3rmann* '# 9ezaur# n alge+raic t3eor5 0or primal and dual su+structuring
met3ods +5 constraints# Else%ier $cience Pu+lis3ers# Journal o0 pplied /umerical
Mat3ematics* Vol# ID@,* ,--I#
[4P5*0#! Message Passing 8nter0ace Forum# MP8! Message@Passing 8nter0ace $tandard* Version ,#.#
Uni%ersit5 o0 9ennessee* ,--B#
[6oce0/! J# /ocedal* $# J# Prig3t# /umerical >ptimization* $pringer* ,--J#
[Piss#7! $# Pissanetz75# $parse Matrix 9ec3nolog5# cademic Press* .CBD#
[8uar00! # =uarteroni* '# $acco* F# $aleri# /umerical Mat3ematics# $pringer* ,---#
[9aad0! E# $aad# 8terati%e Met3ods 0or $parse Ginear $5stems# $8M* ,--A#
[9mit'/! &# F# $mit3* P# E# &)orstad* P# "# (ropp# "omain "ecomposition! Parallel Multile%el
Met3ods 0or Elliptic Partial "i00erential E6uations# Cam+ridge Uni%erist5 Press* .CCJ#
[9ter'3! 9# $terling* "# J# &ec7er* "# $a%arese* J# E# "or+and* U# # 'ana4a7e* C# V# Pac7er#
&E>PUGF! Parallel Por7station For $cienti0ic Computation# Proceedings o0 t3e ,Dt3
8nternational Con0erence on Parallel Processing* .CCI#
[:ose03! # 9oselli* ># Pidlund# "omain "ecomposition Met3ods @ lgorit3ms and 93eor5# $pringer*
,--I#
K;idl0#! ># &# Pidlund# 93e "e%elopment o0 Coarse $paces 0or "omain "ecomposition lgorit3ms#
Proceedings o0 t3e .Bt3 8nternational Con0erence on "omain "ecomposition* ,--B#
[;ulf '3! P# # Pul0 * $# # Mc7ee# 1itting t3e Memor5 Pall! 8mplications o0 t3e >+%ious# Computer
rc3itecture /e4s* ,A:.;!,-@,D* Marc3 .CCI#
[<ann#+! M# Eanna7a7is# Computing t3e minimum 0ill@in is /P@complete# $8M Journal on lge+raic
"iscrete Met3ods* Volume ,* 8ssue .* pp ??@?C* Marc3* .CB.#
[=ien03! >#C# Rien7ie4icz* '#G# 9a5lor* J#R# R3u* 93e Finite Element Met3od! 8ts &asis and
Fundamentals# $ixt3 edition* ,--I#
:'
Ap/ndice A. $ua para 2acer pruebas
Para pro+ar el pro5ecto es necesario utilizar el programa de pre 5 postproceso (i"* desarrollado por
C8M/E :8nternational Center 0or /umerical Met3ods in Engineering;* para generar el mallado 5 al 0inal
para %isualizar los resultados#
Gos resultados se pueden %er de 0orma com+inada* es decir* los resultados de todas las particiones
mezclados o con los resultados de las particiones de 0orma independiente#
Gas instrucciones 0uncionan 3aciendo prue+as tanto en Pindo4s como en Ginux#
8orma combinada
.# +rir el (i"#
,# "esde el menH KFilesM>penL seleccionar alguno de los directorios contenidos en bMecanicDMexamplesb*
por e)emplo el directorio bMecanicDMexamplesMarc@A"#gidb

A# (enerar una malla con el menH KMes3M(enerate mes3L# $e puede cam+iar la densidad del mallado
a)ustando el parmetro del tamaFo del elemento#
:)
Ap/ndice A. $ua para 2acer pruebas

D# E)ecutar el menH KCalculateMCalculateL* esto generar un arc3i%o bMecanicDMexamplesMarc@A"#gidMarc@
A"#datb 6ue contendr los datos de entrada del programa# El sistema generar un mensa)e de error* esto es
por6ue para usar MP8 es necesario e)ecutar el programa manualmente#

I# +rir una consola de comandos#
I#.# Cam+iarse al directorio bMecanicDMexamplesMarc@A"#gidb
:*
Ap/ndice A. $ua para 2acer pruebas
I#,# E)ecutar bmpirun @n I ##M##McodeMMecanicA" arc@A"#dat arc@A"b :esto di%idir el pro+lema en D
particiones;
I#A# l terminar se generar un arc3i%o bMecanicDMexamplesMarc@A"#gidMarc@A"#post#resb 6ue
contendr los resultados de desplazamientos* de0ormaciones 5 tensiones# Gos %alores 6ue reporta el
programa entre corc3etes son el tiempo 6ue tard en e)ecutar cada tarea en segundos#
J# 'egresar al (i" 5 seleccionar el menH KFilesMPostprocessL
:. )ara ver la deformacin resultante, en el men> K7iew resultsL3eformationL3isplacementsM
:%
Ap/ndice A. $ua para 2acer pruebas

7articiones independientes
Para %er los resultados de cada particin de 0orma independiente!
.# En caso de 6ue 5a est a+ierto (i"* cam+iar a modo de preproceso* a+riendo el menH
KFilesMPreprocessL#
,# "esde el menH KFilesM>penL seleccionar alguno de los directorios contenidos en bMecanicDMexamplesb*
por e)emplo el directorio bMecanicDMexamplesMarc@A"#gidb
:,
Ap/ndice A. $ua para 2acer pruebas

A# +rir el menH K"ataMPro+lem dataL* a6u2 se pueden modi0icar los parmetros de e)ecucin del programa
MecanicA"#
A#.# $eleccionar K"omain decompositionL
A#,# cti%ar la opcin KMultiple 0ilesL 5 presionar KcceptL

D# (enerar una malla con el menH KMes3M(enerate mes3L# $e puede cam+iar la densidad del mallado
a)ustando el parmetro del tamaFo del elemento#
:3
Ap/ndice A. $ua para 2acer pruebas

I# E)ecutar el menH KCalculateMCalculateL* esto generar un arc3i%o bMecanicDMexamplesMarc@A"#gidMarc@
A"#datb 6ue contendr los datos de entrada del programa# El sistema generar un mensa)e de error* esto es
por6ue para usar MP8 es necesario e)ecutar el programa manualmente#

J# +rir una consola de comandos#
J#. Cam+iarse al directorio bMecanicDMexamplesMarc@A"#gidb
:5
Ap/ndice A. $ua para 2acer pruebas
J#, E)ecutar bmpirun @n I ##M##McodeMMecanicA" arc@A"#dat arc@A"b :esto di%idir el pro+lema en D
particiones;
J#A l terminar se generarn %arios arc3i%os bMecanicDMexamplesMarc@A"#gidMarc@A"#V#resb 6ue
contendrn los resultados de desplazamientos* de0ormaciones 5 tensiones para cada particin# Gos
%alores 6ue reporta el programa entre corc3etes son el tiempo 6ue tard en e)ecutar cada tarea en
segundos#
?# 'egresar al (i" 5 seleccionar el menH KFilesMPostprocessL
?#.# +rir con el menH KFilesM>penL el arc3i%o bMecanicDMexamplesMarc@A"#gidMarc@A"#.#resb
::
Ap/ndice A. $ua para 2acer pruebas

B# Para %er las otras particiones* regresar al punto ?#. 5 elegir otro arc3i%o bMecanicDMexamplesMarc@
A"#gidMarc@A"#V#resb
C# Es posi+le mezclar las particiones* para esto a+rir KFilesMMergeL 5 seleccionar otro de los arc3i%os
bMecanicDMexamplesMarc@A"#gidMarc@A"#V#resb

.-# Para %er la de0ormacin resultante* en el menH KVie4 resultsM"e0ormationM"isplacementsL
&66
Ap/ndice A. $ua para 2acer pruebas
..# $e puede elegir cam+iar el modo de %isualizacin a+riendo el menH KPindo4MVie4 st5leL#
&6&
Ap/ndice F. E!emplo de e!ecucin en un
cluster
continuacin descri+imos un e)emplo de los comandos necesarios para* una %ez teniendo un arc3i%o de
datos* e)ecutar el programa en un cluster#
E)emplo del comando para e)ecutar el programa en el cluster es
mpirun @n I? @3ost0ile 3ost0ile#txt @r0 ran70ile#txt @@mca mpiW5ieldW43enWidle . MecanicA" arc@A"#dat arc@
A"
E)emplo del hostsfile
el@insurgente#local slotsZ. maxWslotsZ.
compute@-@.?#local slotsZD maxWslotsZD
compute@-@.B#local slotsZD maxWslotsZD
compute@-@.C#local slotsZD maxWslotsZD
compute@-@,-#local slotsZD maxWslotsZD
compute@-@,.#local slotsZD maxWslotsZD
compute@-@,,#local slotsZD maxWslotsZD
compute@-@,A#local slotsZD maxWslotsZD
compute@-@,D#local slotsZD maxWslotsZD
compute@-@,I#local slotsZD maxWslotsZD
compute@-@,J#local slotsZD maxWslotsZD
compute@-@,?#local slotsZD maxWslotsZD
compute@-@,B#local slotsZD maxWslotsZD
compute@-@A.#local slotsZD maxWslotsZD
compute@-@A,#local slotsZD maxWslotsZD
E)emplo del ran?file
&6)
Ap/ndice F. E!emplo de e!ecucin en un cluster
ran7 -Zel@insurgente#local slotZ-
ran7 .Zcompute@-@.?#local slotZ-
ran7 ,Zcompute@-@.B#local slotZ-
ran7 AZcompute@-@.C#local slotZ-
ran7 DZcompute@-@,-#local slotZ-
ran7 IZcompute@-@,.#local slotZ-
ran7 JZcompute@-@,,#local slotZ-
ran7 ?Zcompute@-@,A#local slotZ-
ran7 BZcompute@-@,D#local slotZ-
ran7 CZcompute@-@,I#local slotZ-
ran7 .-Zcompute@-@,J#local slotZ-
ran7 ..Zcompute@-@,?#local slotZ-
ran7 .,Zcompute@-@,B#local slotZ-
ran7 .AZcompute@-@A.#local slotZ-
ran7 .DZcompute@-@A,#local slotZ-
ran7 .IZcompute@-@.?#local slotZ.
ran7 .JZcompute@-@.B#local slotZ.
###
ran7 IJZcompute@-@A,#local slotZA
&6*
Ap/ndice C. $eneracin de mallas
grandes
/o es 0acti+le crear mallas de decenas de millones de elementos usando el (i" en modo interacti%o* para
estos casos se tiene 6ue e)ecutar en una consola de comandos en modo +atc3# El siguiente script llama a
(i" en este modo 5 e)ecuta el arc3i%o +atc3 :+c3; 6ue se muestra ms a+a)o#
_cM+inMs3
(8""EFUG9ZMpplicationsM(i"@C#,#,+#appMContentsMMac>$
(8""EFUG99CGZd(8""EFUG9Mscripts
9CGWG8&''EZd(8""EFUG9Mscripts
9QWG8&''EZd(8""EFUG9Mscripts
"EG8&WG8&''EWP91Zd(8""EFUG9Mli+
"EG"WG8&''EWP91Zd(8""EFUG9Mli+
export (8""EFUG9
export (8""EFUG99CG
export 9CGWG8&''E
export 9QWG8&''E
export "EG8&WG8&''EWP91
export "EG"WG8&''EWP91
MpplicationsM(i"@C#,#,+#appMContentsMMac>$Mgid#exe @n @+ mes3#arc@A"#sstruct#+c3
b##M##MexamplesMarc@A"#gidb
Script para llamer a @i3
VVVVV>U9PU9F8GE/ME barc@A"#logb
Mes3ing 'eset 5 escape escape escape
Mes3ing $emi$tructured Volumes D-- 8n%ert$election escape escape escape
Mes3ing Elem95pe 9etra3edra 8n%ert$election escape escape escape
Mes3ing (enerate -#,,- escape escape escape
Files PriteCalcFile barc@A"#datb escape escape escape
Archivo bch con los comandos de @i3 para la generacin de mallas
El arc3i%o +atc3 anterior tiene dos parmetros* uno es la cantidad de di%isiones 5 otro el tamaFo del elemento#
Variando estos dos %alores se o+tienen los siguientes resultados!
Di8isiones 6ize /lements 9odes
*66 6.'66 &)633,66 '))*,''
*66 6.&3% &,,**666 ':%&),6
*66 6.&%6 ''*&,666 ):**,)3
*66 6.&'% )&::,566 %%5*3'3
&6%