Documentos de Académico
Documentos de Profesional
Documentos de Cultura
por
Resumen
Nuestro trabajo trata sobre la solucin numrica de problemas de deformacin lineal de slidos por medio
del mtodo de elementos finitos, estos problemas se resuelven utilizando estratgias de cmputo en
paralelo. Hablamos sobre algunas formas de paralelizar los algoritmos, tanto utilizando modelos de
memoria compartida como de memoria distribuda.
En particular nos centraremos en la descomposicin de dominios usando el mtodo alternante de Schwarz
para resolver problemas de elemento finito con mallas muy refinadas. El mtodo alternante de Schwarz se
refiere a particionar el dominio del problema de tal forma que haya traslape en las fronteras comunes de
las particiones. Cada particin se resuelve como un problema independiente, despus se intercambian
valores en las fronteras con las particiones adyacentes. Este proceso se repite de forma iterativa hasta la
convergencia global del problema. Hablaremos de la paralelizacin utilizando dos tipos de algoritmos
para resolver los sistemas de ecuaciones resultantes: gradiente conjugado y factorizacin Cholesky.
En cuanto a la factorizacin Cholesky, explicaremos varias estratgias para hacerla ms eficiente, como
son: almacenamiento utilizando esquemas de matrices ralas, factorizacin Cholesky simblica para
determinar la estructura de la matriz antes de calcular sus entradas y el reordenamiento de la matiz de
rigidez para obtener una factorizacin ms econmica.
Se describe en esta tesis la implementacin de un programa de cmputo que utiiliza la descomposicin de
Schwarz para resolver problemas de deformacin de slidos en dos y tres dimensiones. Este programa fue
implementado para funcionar en un cluster de computo con el objetivo de resolver problemas de gran
escala en forma eficiente. Finalmente mostraremos algunas grficas de tiempos obtenidas al resolver
sistemas de ecuaciones con decenas de millones de variables.
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 y de forma general quiero agradecer al CIMAT, es un gran lugar para crecer, tanto en
forma acadmica, como en forma personal. Es una comunidad fantstica de la cual recib incontable
apoyo. En partcular ahora quiero decir gracias al Dr. Salvador Botello por compartir su conocimiento y
experiencia, por todo el apoyo que me brind. Adems de asesorar y guiar con por buen camino esta tsis,
consigui los recursos (becas, cursos y hardware) necesarios para llevarla a cabo. A los revisores Dr.
Arturo Hernndez Aguirre y Dr. Miguel ngel Mreles Vzquez, por sus valiosos comentarios y
opiniones. Agradezco tambin a Jose Jesus Rocha Quezada quien fue el encargado poner a punto el
cluster de cmputo en el cual se implement esta tesis.
Al Dr. Juan Jos Tapia Armenta por su inters en este trabajo de tsis y por tomarse el tiempo de leer y
enviarme comentarios, los cuales fueron de gran ayuda.
Apoyos recibidos
Durante el tiempo en que realic mis estudios de maesta recib apoyos en forma de becas, sin los cuales
no hubiese sido posible la conclusin de estos y el desarrollo de esta tsis.
Centro de Investigacin en Matemticas (CIMAT)
Octubre a diciembre de 2007. Art20 - III - Beca de estudios de Maestra (Acta 2007-013)
Agosto a diciembre de 2009. Art19- VI- Beca de elaboracin de tesis de Maestra (Acta 2009-011)
Enero de 2008 a julio de 2009. Convocatoria de Becas Conacyt Nacionales enero - julio 2008.
A los implicados
ndice General
Resumen................................................................................................................................................. 3
Agradecimientos.................................................................................................................................... 5
Apoyos recibidos.................................................................................................................................. 5
Centro de Investigacin en Matemticas (CIMAT)...........................................................................5
Consejo Nacional de Ciencia y Tecnologa (Conacyt).....................................................................5
1. Introduccin....................................................................................................................................... 11
1.1. Motivacin.................................................................................................................................... 11
1.2. Distribucin de los captulos.........................................................................................................11
1.3. Modelos de cmputo en paralelo.................................................................................................12
1.4. Avance del cmputo en paralelo..................................................................................................13
1.5. Las matemticas del paralelismo.................................................................................................14
1.6. Sobre el estado del arte...............................................................................................................15
1.6.1. Discretizacin con el mtodo de elementos finitos...............................................................15
1.6.2. Descomposicin de dominios...............................................................................................16
1.6.3. Dominios sin traslape, complemento de Schur.....................................................................17
1.6.4. Mtodos Neumann-Neumann...............................................................................................18
1.6.5. Mtodos Dirichlet-Dirichlet....................................................................................................20
2. Deformacin elstica de slidos con el mtodo de los elementos finitos....................................23
2.1. Elasticidad bidimensional.............................................................................................................23
2.1.1. Esfuerzos y deformaciones..................................................................................................23
2.1.2. Principio de trabajos virtuales...............................................................................................24
2.1.3. Discretizacin en elementos finitos.......................................................................................25
2.1.4. Funciones de forma..............................................................................................................26
2.1.5. Discretizacin de los campo de deformaciones y esfuerzos.................................................27
2.1.6. Ecuaciones de equilibrio de la discretizacin........................................................................29
2.1.7. Ensamblado de la matriz de rigidez......................................................................................30
2.2. Elasticidad tridimensional.............................................................................................................32
2.2.1. Esfuerzos y deformaciones..................................................................................................32
2.2.2. Funciones de forma..............................................................................................................34
2.2.3. Discretizacin de los campo de deformaciones y esfuerzos.................................................35
2.2.4. Ecuaciones de equilibrio de la discretizacin........................................................................37
3. Una aplicacin de la paralelizacin con memoria compartida......................................................39
3.1. Introduccin................................................................................................................................. 39
3.2. Arquitectura del procesamiento en paralelo.................................................................................39
3.3. Paralelizacin con threads...........................................................................................................41
3.4. Algoritmo de gradiente conjugado................................................................................................42
3.5. Formulacin en paralelo...............................................................................................................44
9
Agradecimientos
10
1. Introduccin
1.1. Motivacin
Algunos problemas modelados con elemento finito requieren de una discretizacin muy fina para reducir
el grado de error, lo cual implica utilzar una gran cantidad de recursos de cmputo para poder ser
resueltos. En particular nos enfocamos en problemas de elemento finito resultantes de la modelacin de la
deformacin elstica de slidos en dos y tres dimensiones. Sucede entonces que el tamao de las matrices
resultantes de esta modelacin fina son tan grandes que no es factible almacenarlas en la memoria de una
sola computadora, adems, el tiempo que se tarda en encontrar la solucin del sistema de ecuaciones
puede ser demasiado extenso como para resultar prctico. Lo que nos lleva a cambiar de paradigma de
programacin y enfocarnos en el cmputo en paralelo, con el cual hacemos que mltiples computadoras
trabajen de forma cooperativa en la resolucin de este tipo de problemas.
11
1. Introduccin
Para solventar los problemas encontrados con el esquema hbrido, decidimos implementar como solver
del sistema de ecuaciones la factorizacin Cholesky simblica para matrices ralas. En el captulo 5
mostramos la teora y detalles de implementacin de este solver.
Al utilizar la factorizacin Cholesky para matrices ralas como solver para el esquema de memoria
distribuida implementado se obtuvieron resultados interesantes, los cuales son mostrados en el captulo 6.
Se incluye al final de este trabajo un apndice con los detalles del programa de software que implementa
los algoritmos descritos en los captulos 3 a 5.
Un
dato
Mltiples
datos
Una
instruccin
Mltiples
instrucciones
SISD
MISD
SIMD
MIMD
SISD (single instruction, single data). En este modelo no existe paralelismo ni de procesamiento de datos
ni de ejecucin de instrucciones. Se refiere entonces al procesamiento serial encontrado en las
computadoras con un solo procesador.
SIMD (single instruction, multiple data). Este tipo de computadoras tienen arreglos de procesadores que
ejecutan la misma secuencia de instrucciones en datos diferentes. Las tarjetas de video modernas o GPUs
se basan en este modelo, cada una puede tener decenas o cientos de procesadores que pueden, por
ejemplo, aplicar la misma operacin a muchas entradas de una matriz al mismo tiempo. El diseo de este
tipo de hardware lo hace especialmente eficiente para operaciones sencillas, pero no lo es tanto cuando
los algoritmos presentan condiciones de la forma: si el dato es A ejecuta esta instruccin, si es B esta otra.
Este tipo de condicionantes no son fciles de paralelizar, lo que resulta en que en estos casos se ejecute
primero la instruccin para A y luego la instruccin para B de forma serial.
MISD (multiple instruction, single data). Es el caso menos comn de esta taxonoma, en l mltiples
procesadores trabajan en paralelo pero en un mismo dato. Este tipo de arquitectura se utiliza en sistemas
que tienen que operar a prueba de fallos, en los cuales es necesario tener redundancia. Por ejemplo la
computadora de control de vuelo del transbordador espacial utiliza esta arquitectura.
MIMD (multiple instruction, multiple data). En este caso se tienen muchos procesadores, cada uno
ejecutando una secuencia de instrucciones aplicada a datos diferentes. Por ejemplo, las computadoras de
escritorio multi- core siguen esta arquitectura. Los sistemas distribuidos tambin se consideran dentro de
esta clase, tanto si utilizan esquemas de memoria compartida o distribuida. Es la arquitectura ms
12
1. Introduccin
Motorola 68040
(44M ips)
Intel 80x486
(54M ips)
Motorola 68060
(88M ips)
Intel Pentium Pro
(541M ips)
1985
1990
Intel 80x386
(11M ips)
1E+10
Intel 80x286
(4M ips)
2E+10
Intel 8080
(500K ips)
3E+10
Motorola 68000
(1M ips)
4E+10
Intel Core i7
AMD Phenom II X4 (76G ips)
(43G ips)
5E+10
PlayStation 3 Cell
(10G ips)
6E+10
7E+10
Intel Core 2
(49G ips)
8E+10
Intel 4004
(92K ips)
0E+0
1970
1975
1980
1995
2000
2005
2010
Figura 1.1. Evolucin de la capacidad de los procesadores en instrucciones por segundo (ips).
Este incremento no solo se debe al desarrollo de la tecnologa con la que se fabrican los procesadores,
sino al hecho de que ahora se fabrican procesadores con varios ncleos. Por ejemplo el procesador Intel
Core i7-980X tiene 6 ncleos. Los sistemas operativos y compiladores modernos aprovechan esta
caracterstica para ejecutar sus rutinas en paralelo. El estndar ms utilizado para procesadores multi-core
es OpenMP [Chap08].
Otro avance importante en los ltimos aos es que el uso de clusters de computadoras se ha hecho
accesible. En particular los clusters Beowulf [Ster95], son implementados con computadoras comerciales
que son interconectadas por medio de una red local (figura 1.2), las computadoras funcionan ejecutando
sistemas operativos libres (GNU/Linux, FreeBSD, etc.) y se programan utilizando libreras que permiten
la comunicacin entre los programas de clculo numrico. La librera ms utilizada para desarrollar
aplicaciones en paralelo en clusters Beowulf es la interface de pase de mensajes MPI (del ingls,
Message Passing Interface) [MPIF08], sta permite implementar con facilidad programas que se ejecuten
bajo el esquema de memoria distribuida.
13
1. Introduccin
Computadora
nodo maestro
Red
externa
Switch
de red
Figura 1.2. Configuracin tpica de un cluster Beowulf.
El trabajo de esta tesis implic el desarrollo de un programa de software para resolver problemas de
elemento finito utilizando cmputo en paralelo. Para la implementacin y prueba de este programa se
utiliz el cluster de cmputo del CIMAT, el cual sigue el modelo MIMD. Cuenta con 30 computadoras
multi-core, las cuales proveen un total de 192 procesadores, los cuales son accesados a travs de un nodo
maestro. stas tienen instalado el sistema operativo GNU/Linux, la suite de compiladores GNU/GCC y la
librera de MPI OpenMPI..
a= x i yi,
i=1
donde a es un escalar, una primera aproximacin sera verlo como una secuencia de sumas de productos
que requieren ir acumulando un resultado, al verlo as no es una operacin paralelizable. Sin embargo,
podemos reorganizar el proceso como se muestra en la figura 1.3.
14
1. Introduccin
x1 y1
x2 y2
x3 y 3
x4 y4
xN y N
En este caso se tiene una paralelizacin eficiente de la multiplicacin de las entradas de los vectores,
despus se va reduciendo la eficiencia, el primer grupo se sumas es realizado por N / 2 procesadores, las
segundas sumas por N / 4 procesadores, hasta llegar a la suma final en un procesador, el que obtiene el
resultado final a. En este tipo de paralelizacin existe dependencia entre los datos y ello provoca que sea
menos eficiente. Muchos algoritmos seriales requieren, para ser paralelizados, de re-ordenar las
operaciones con una estrategia de divide y vencers, como en el caso del producto punto. Usualmente
se tendrn memos procesadores que el tamao del vector, por lo que se asignan varias operaciones de un
grupo a cada procesador, las cuales se ejecutarn en secuencia, lo que reduce an ms la eficiencia del
paralelismo.
1. Introduccin
comparten aristas y nodos, figura 1.4. Las relaciones entre nodos corresponden a entradas en una matriz.
As, la relacin entre los nodos i y j equivale a un valor en la entrada a i j en una matriz A. Dado que
existe una relacin del nodo i al nodo j, tambin existe una relacin (no necesariamente con el mismo
valor) del nodo j al nodo i, lo que producir una matriz con estructura simtrica, aunque no
necesariamente simtrica en cuanto a sus valores (en las secciones siguientes se tratan slo problemas con
matrices simtricas tanto en estructura como en valores). Adems, en la diagonal aparecen entradas que
representan a los nodos.
aii
ai j
j
A=
a ji
ajj
x=c en
con ciertas condiciones (Dirichlet o Neumann) en la frontera . En el captulo 2 formularemos
problema de deformacin lineal de slidos utilizando este mtodo.
1.6.2. Descomposicin de dominios
La descomposicin de dominios nace de la necesidad de trabajar ecuaciones diferenciales en dominios
discretizados que producen sistemas de ecuaciones grandes, tratando de resolverlos de forma eficiente. En
forma general podemos decir que existen dos tipos de descomposicin de dominios, utilizando particiones
sin traslape o con traslape, figura 1.5.
2
1
2
1
Figura 1.5. Descomposicin en dominios sin traslape (izquierda) y con traslape (derecha).
16
1. Introduccin
Dividir un dominio en P particiones equivale entonces a separar en P bloques la matriz A que representa
las relaciones entre nodos. Cada dominio entonces estar representado por una matriz A p, con p=1 P.
El siguiente paso es resolver el sistema de ecuaciones con la matriz A p de cada particin de foma
independiente, utilizando algn mtodo convencional para resolver sistemas de ecuaciones. La soluciones
obtenidas se intercambiarn con las particiones adyacentes y as, de forma iterativa, se ir aproximando la
solucin global del sistema.
1.6.3. Dominios sin traslape, complemento de Schur
En dominios sin traslape,
=12 , 12=, = 1 2,
dos particiones adyacentes tendrn nodos en comn en la frontera , lo que equivaldr a entradas iguales
en sus respectivas matrices. Podemos entonces formar la matriz A como
AI1I
A= 0
A1I
AI1
x I1
bI1
AI2 , x= x I2 , b= b I2 .
x
b
A
0
AI2I
A2 I
(1.1)
A =
AIpI
AIp
ApI
Ap
,x =
x Ip
x p
,b =
b I p
b p
, con p=1 P.
(1.2)
Una estrategia para resolver este tipo de problemas es utilizar el sistema de complementos de Schur
[Tose05 pp1-7]. Parte de eliminar las incgnitas x I p en el interior de la particin, esto corresponde a la
factorizacin de la matriz de (1.1) como
I
0
0
A=L R=
0
I
0
1 1 1
2
2 1
A I AI I
A I A I I
I
AI1I
0
0
0
AI2I
0
AI1
AI2 ,
S
AI1I
0
0
0
AI2I
0
AI1
bI1
AI2 x = bI2 ,
S
g
aqu
1
(1.3)
con
17
1. Introduccin
S =S 1 S 2,
x I p = AIpI
bIp AI p x .
AI pI
ApI
AIp
Ap
(1.4)
x Ip
bI p
=
, con p=1 P.
x p
bp p
g p p ,
(1.5)
con
1
F = S 1 S 2 ,
1
d =d 1 d 2= S 1 g 1 S 2 g 2 .
18
1. Introduccin
Problema Dirichlet D p
Problema Neumann N p
2
x n1/
=b en p
p
n1 /2
x p =0
sobre p , p=1, 2,
n 1 / 2
n
x p =x en
n1
en p
p =0
n 1
p =0
sobre p
, p=1, 2.
n1
n1/ 2
n1/ 2
p
x1
x2
=
en
ni
n1
n2
Problema Dirichlet D p
Problema Neumann N p
/2
AIpI AI p w n1
0
p
=
, p=1, 2 ,
p
p
n1/ 2
r
A I A p
(1.6)
(1.7)
n
n1
n1
x n1
= x 1 2 ,
r = g S x n ,
que indica que la diferencia r es igual al negativo del residual del complemento de Schur para el sistema
(1.5). Usamos la factorizacin por bloques de las matrices locales A p, los problemas de Neuman N p dan
1
p = S p r = S p r
n1
g S x n .
Finalmente encontramos
n
1
2
x n1
x = S 1 S
g S x .
n
S F= S 1 S 2
] S=[ S
1 1
S 2
] S S .
1
Tomando como base el algoritmo Neumann-Neumann, se ha desarrollado el mtodo BDD (en ingls,
Balancing Domain Decomposition), la formulacin de ste se puede encontrar en [Mand93]. Los mtodos
BDD son algoritmos iterativos que trabajan con subestructuras, es decir, mtodos donde los grados de
libertad interiores de cada una de las particiones sin traslape son eliminados. En cada iteracin se
resuelven los problemas locales de cada particin y se combinan las soluciones con un problema en una
malla ms gruesa creata a partir del subdominio del espacio nulo. En las fornteras comunes se establecen
condiciones Neumann.
19
1. Introduccin
Una de las estratgias ms recientes para resolver problemas de descomposicin de dominios para
problemas de elemento finito de deformacin elstica de slidos que producen matrices simtricas
positivas definidas es el mtodo de balance de descomposicin de dominios por restricciones, BDDC (en
ingls, Balancing Domain Decomposition by Constraints) [Mand02] y [Dohr03]. El problema se resuelve
utilizando formulando un espacio grueso (coarse space) el cual consiste de fuciones de minimizacin de
energa con los grados de libertad dados en la malla gruesa, una descripcin condensada puede
encontrarse en [Widl08].
Recientemente se han desarrollado algoritmos basados en BDD formulados con subdominios con
traslape, la descripcin de estos puede consultarse en [Kimn06a] y [Kimn06b].
1.6.5. Mtodos Dirichlet-Dirichlet
El caso dual al algoritmo Neumann-Neuman es el algoritmo con condiciones Dirichlet a ambos lados de
la interfaz comn de los subdominios [Tose05 pp12-14]. Si comenzamos con una aproximacin inicial 0
en , como en (1.4), podemos resolver inicialmente problemas con condiciones Neumann, en cada p .
Despus resolveremos un problema con las condiciones Dirichlet en elegidas como la diferencia de la
traza de las soluciones de los problemas Neumann en . Los valores en de las derivadas normales de
las soluciones de estos problemas Dirichlet son empleados para corregir la 0 incial y encontrar el valor
1
para la nueva iteracin. Para dos partciones, podemos describir el mtodo utilizando operadores
diferenciales, as, para n0,
Problema Neumann N p
Problema Dirichlet D p
2
x n1/
=b en p
p
n1 /2
x p =0
sobre p
, p=1, 2 ,
n1/ 2
xp
n
= p en
np
n1
en p
p =0
n 1
p =0
sobre p , p=1, 2 .
n1
n1 /2
n1/ 2
p =x 1 x 2
en
1 n1 2 n1
en ,
n1
n2
AIpI
AI p
ApI
Ap
Problema Dirichlet D p
2
v n1/
p
2
n1/
p
20
b Ip
bp np
, p=1, 2,
p
AI pI w n1
p AI r =0, p=1, 2 ,
n
n1
n1
n1
= 1 2 ,
(1.8)
(1.9)
1. Introduccin
2
r =1n1/ 2n1/
,
2
y los flujos n1
por
p
p n 1 / 2
n1
Ap r .
p = A I w p
2
/2
2
Para eliminar v n1/
, w n1
y n1/
de (1.8) y (1.9) usamos la factorizacin por bloques de las matrices
p
p
p
p
locales A , los problemas de Neuman N p dan
r = d F n ,
que indica que la diferencia r es igual al negativo del residual del complemento de Schur para el sistema
(1.5). De los problemas Dirichlet D p podemos establecer
p
n1
r =S p r d F n .
p =S
Finalmente encontramos
n
n
1
2
n1
= S S d F .
S F= S S 1 S 2
]= S S [ S
1
1 1
S 2
].
A este mtodo se le conoce como FETI (Finite Element Tearing and Interconnect), especficamente FETI
con precondicionador [Tose05 p14].
El mtodo FETI se puede reformular como un problema de minimizacin con restricciones, minimizando
la suma de las formas de energa de los dos subproblemas sujetos a la restriccin x 1 x 2 =0, tendremos
entonces que formar un vector de multiplicadores de Lagrange [Li05], a este nuevo mtodo se le
conoce como FETI-DP (FETI Dual-Primal) [Farh01]. Una descripcin profunda de estos mtodos puede
encontrarse en [Tose05], [Mand05] y en [Widl08].
21
Vamos a describir la teora de elasticidad de slidos en dos y tres dimensiones. En este desarrollo
modelaremos slidos formados por materiales homogneos e isotrpicos.
u x , y = u x , y ,
v x , y
(2.1)
[]
x
= y
x y
[ ][ ]
x
x
v
=
= 0
y
u v
y
y x
[uv ],
(2.2)
donde x y y son las deformaciones normales y x y la deformacin por cizalladura. Con respecto a la
deformacin longitudinal z hay que sealar que en el caso de deformacin plana se utiliza la hiptesis de
que es nula. Por otra parte, en un estado de esfuerzo dicha deformacin no es nula, pero s se supone que
23
lo es z (la componente del esfuerzo perpendicular al plano). Por consiguiente, en ninguno de los dos
casos hay que considerar la deformacin z ya que no interviene en las ecuaciones del trabajo de
deformacin al ser el producto z z nulo. Tambin consideramos que x z= y z =0.
De la ecuacin (2.2) se deduce que los esfuerzos tangenciales x z y y z son nulos. Usando la misma
hiptesis con respecto a la deformacin z, el esfuerzo z no interviene, por tanto el vector de esfuerzos
ser
[]
x
= y ,
x y
(2.3)
1 v
0
E
D=
v 1
0
,
1 2 0 0 1v /2
donde E es el mdulo de Young y el coeficiente de Poisson.
2.1.2. Principio de trabajos virtuales
La expresin integral de equilibrio en problemas de elasticidad bidimensional puede obtenerse haciendo
uso del principio de los trabajos virtuales [Zien05 pp65-71]. Teniendo en cuenta los esfuerzos y
deformaciones que contribuyen al trabajo virtual de la estructura, la expresin del principio de trabajos
virtuales puede escribirse como
x x y y y y t dA= ub x vb y t dAu t x v t y t ds ui U x v i V y .
A
(2.6)
A la izquierda de la ecuacin est representado el trabajo que los esfuerzos x, y y x y realizan sobre las
deformaciones virtuales x, y y x y. El primer miembro a la derecha de la igualdad representa las
fuerzas repartidas por unidad de volumen b x y b y. El segundo miembro indica las fuerzas repartidas sobre
el contorno t x y t y. Y finalmente el tercer miembro las fuerzas puntuales U i y V i sobre los
desplazamientos virtuales u y v. A y l son el rea y el contorno de la seccin transversal del slido y t
su espesor. En problemas de esfuerzo plano, t coincide con el espesor real, mientras que en problemas de
deformacin plana es usual asignar a t un valor unidad.
24
[ ]
qi= U i ,
Vi
el vector de fuerzas sobre el contorno
[]
t=
tx
ty
[]
b= b x ,
by
podemos entonces expresar (2.6) en forma matricial
T t dA= uT b t dA uT t t ds uTi q i.
A
(2.7)
De las ecuaciones (2.2) y (2.4) se observa que en las integrales del principio de trabajos virtuales slo
intervienen las primeras derivadas de los desplazamientos, lo que implica que se requiere continuidad de
clase C 0 en la aproximacin de elementos finitos.
2.1.3. Discretizacin en elementos finitos
La figura 2.1 muestra el dominio de un problema, el cual se analiza bajo las hiptesis de elasticidad
bidimensional, cuenta adems con ciertas condiciones de frontera de Dirichlet u y de Neumann q .
u
q
Figura 2.1. Dominio del problema.
Para nuestro desarrollo vamos a utilizar para discretizar el dominio elementos triangulares de tres nodos,
los cuales son sencillos de visualizar. En la figura 2.2 vemos la discretizacin del dominio .
25
q
Figura 2.2. Discretizacin (mallado) del dominio.
La malla de elementos finitos representa una idealizacin de la geometra real. Por consiguiente, el
anlisis por elementos finitos reproduce el comportamiento de la malla escogida y no el de la estructura
real. Solamente comprobando la convergencia de la solucin podemos estimar el grado de aproximacin
de la solucin de elementos finitos a la exacta.
2.1.4. Funciones de forma
Un elemento triangular de tres nodos se caracteriza por los nmeros de sus nodos 1, 2, y 3, con sus
respectivas coordenadas. Esta numeracin es local y tiene que crearse una correspondencia con la
numeracin global.
N 2 x , y
y
N 1x , y
N3 x , y
Figura 2.3. Funciones de forma para un elemento finito triangular de tres nodos.
Tomando un elemento aislado, como el de la figura 2.3, podemos expresar los desplazamientos
cartesianos de un punto cualquiera en el interior del elemento en funcin de los desplazamientos de sus
nodos introduciendo las funciones de norma N i, con i=1, 2,3
3
u x , y = N i x , y u i,
i=1
3
v x , y = N i x , y v i,
i=1
donde u i y vi son los valores discretos de desplazamiento en los nodos. Una funcin de forma N i tiene que
cumplir la condicin de valer uno en la coordenada del nodo i y cero en los nodos ji.
26
Para obtener unas funciones de forma ms fciles de trabajar, es conveniente hacer un mapeo a un espacio
normalizado, como se muestra en la figura 2.4.
y
u , = N i , ui ,
i =1
3
v , = N i , v i ,
i=1
x , = N i , x i,
i=1
3
y , = N i , yi .
i =1
27
Para aplicar un cambio de variable en las primeras derivadas requeriremos del jacobiano
Ni
x y
=
x y
Ni
Ni
x
Ni .
y
Je
S det J e0, entonces
Ni
x = J e 1
Ni
y
Ni
.
Ni
[]
x
= y =
i
x y
[ ][ ]
Ni
u
x i
Ni
=
v
y i
i
Ni
Ni
u
v
y i x i
Ni
x
Ni
y
Ni
x
Ni
y
[]
ui
vi ,
(2.8)
ui
Bi
donde Bi es la matriz de deformacin del nodo i. Visto en forma ms compacta
=[ B1 B2 B n ]
[]
u1
u2
,
un
finalmente como
=B u.
(2.9)
Puede verse entonces que la matriz de deformacin B est compuesta de tantas sub-matrices Bi como
nodos tienen el elemento.
La expresin discretizada del vector de esfuerzos (2.3) se obtiene a partir de (2.4)
=D B u.
Puede observarse de (2.8) que la matriz de deformacin B del elemento triangular de tres nodos es
constante, lo que implica que las deformaciones y esfuerzos son constantes en todo el elemento. Esto es
consecuencia directa del campo de desplazamientos lineal escogido, cuyos gradientes son obviamente
constantes. Por consiguiente, en zonas de alta concentracin de esfuerzos ser necesaria utilizar una malla
tupida para aproximar la solucin de esfuerzos con suficiente precisin.
28
tx
by
Px1
Fuerzas de superficie
t=
tx
ty
qi = U i
Vi
Pi= Px i
Py i
v2 , V 2
bx
v1 ,V 1
b= b x
by
u3 , U 3
ty
[]
[]
[ ]
[ ]
Fuerzas msicas
u2 , U 2
u1 , U 1
P y1
x ,u
Figura 2.5. Fuerzas sobre un elemento triangular de tres nodos.
Partiendo de la suposicin de que el equilibrio del elemento se establece nicamente en los nodos,
podemos definir unas fuerzas puntuales de que acten sobre los nodos que equilibren las fuerzas debidas
a la deformacin del elemento y al resto de las fuerzas que actan sobre el mismo. Hacemos entonces uso
del principio de trabajos virtuales (2.7) aplicado ahora al elemento
T t dAe uT b t dAe u T t t ds e =u T q e,
A
tomando adems en cuenta que los desplazamientos virtuales son arbitrarios, y el espesor es constante,
t B T dAe t b dAet t ds e=qe .
A
(2.10)
La ecuacin (2.10) expresa el equilibrio entre las fuerzas nodales de equilibrio y las fuerzas debidas a la
deformacin del elemento (la primer integral), las fuerzas msicas (segunda integral) y las de superficie
(tercera integral). Sustituyendo el vector de esfuerzos por su valor en funcin de los desplazamientos
nodales utilizando la forma general (2.5)
29
t B D dA t B D 0 dA t B 0 dA t b dA t t ds =q ,
A
,
e
e
e
e
e
K
f
f
fb
ft
e
(2.11)
donde K e es la matriz de rigidez del elemento y tenemos un conjunto de fuerzas nodales equivalentes
debidas a: deformaciones iniciales f e, esfuerzos iniciales f e, fuerzas msicas f eb, fuerzas en la superficie
f et .
Definiendo el vector de fuerzas nodales equivalentes del elemento como
e
e
e
e
e
f = f f f b f t ,
podemos expresar (2.11) como un sistema de ecuaciones para el elemento
K e u= f eqe .
La ecuacin de equilibrio total de la malla se obtiene estableciendo que la suma de las fuerzas nodales de
equilibrio en cada nodo debe ser igual a la fuerza nodal exterior, es decir
qej =q j,
e
esta es la suma de las contribuciones de los vectores de fuerzas nodales de equilibrio de los distintos
elementos que comparten el nodo con numeracin global j, y p j representa el vector de fuerzas puntuales
actuando en dicho nodo.
Las ecuaciones de equilibrio de la malla se obtienen a partir de las contribuciones de las matrices
elementales de rigidez y de los vectores de fuerzas nodales equivalentes de los diferentes elementos. As
pues, tras el ensamblaje, la ecuacin matricial global se puede escribir como
K u= f ,
donde K es la matriz de rigidez, u es el vector de desplazamientos nodales y f el vector de fuerzas
nodales equivalentes de toda la malla.
Recordemos de nuevo que las fuerzas nodales de equilibrio debidas al las fuerzas de interaccin entre los
contornos de los elementos adyacentes se anulan en el ensamblaje, debido a que dichas fuerzas tienen
igual magnitud y direccin, pero sentidos opuestos en cada elemento. A efectos prcticos, solamente hay
que considerar el efecto de las fuerzas de superficie cuando se trate de fuerzas exteriores actuantes sobre
lados de elementos que pertenezcan al contorno de la estructura.
2.1.7. Ensamblado de la matriz de rigidez
El primer paso es generar una malla de elementos para el dominio e identificar los nodos.
30
15
33
25
12
13
24
14
30
29
28
31
32
26
21
27
20
11
16
23
22
19
17
18
1
10
7
Figura 2.6. Numeracin global de los nodos en el dominio.
Se calcula la matriz elemental K e y el vector f e para cada elemento. Por ejemplo, en la figura 2.6 se
destaca el elemento con nodos 3, 5 y 9. Su ensamblaje es mostrado en la figura 2.7.
Global
Local
3x 1x
3 y 1y
9x
9y
5x
5y
2x
2y
3x
3y
3x
1x
3y
1y
K e11
K e2 1
K e3 1
K e4 1
K e5 1
K e6 1
9x
2x
9y
2y
5x
3x
K e1 2 K e1 3
K e1 4
K e1 5
K e1 6 ue1
K e2 2
K e3 2
K e4 2
K e5 2
K e6 2
K e2 4
K e3 4
K e4 4
K e5 4
K e6 4
K e2 5
K e3 5
K e4 5
K e5 5
K e6 5
K e2 6
K e3 6
K e4 6
K e5 6
K e6 6
K e2 3
K e3 3
K e4 3
K e5 3
K e6 3
5y
3y
][ ] [ ]
f e1
ue2
f e2
ue3
f e3
=
ue4
f e4
ue5
f e5
ue6
f e6
Los valores se sumarn a la matriz de rigidez K y al vector f , como se muestra en la figura 2.8.
31
K e11
K 1e 2
K e1 5 K e1 6
K 21 K22
K e5 1 K e5 2
K e6 1 K e6 2
e
e
K 31 K32
e
41
e
42
K e1 3 K e1 4
K25 K 26
K e5 5 K e5 6
K e6 5 K e6 6
e
e
K35 K 36
e
45
e
46
][ ]
u e1
f e1
K23 K 24
K e5 3 K e5 4
u2
u e5
f2
f e5
K e6 3 K e6 4
e
e
K33 K 34
u e6 = f e6
e
e
u3
f3
e
43
e
44
u4
f4
Una condicin de frontera de Dirichlet, u i fijo, implicarn eliminar el i-simo rengln y la i-sima
columna de la matriz de rigidez y el i-simo rengln del vector . Para poder hace esto, hay que compensar
en el vector f de esta forma
f j f j K i j u j, ji
La matriz de rigidez resultante no tendr un ancho de banda predefinido.
u x , y , z
u x , y , z = v x , y , z .
w x , y , z
32
[]
x
y
= y
x y
y z
z x
[]
u
x
v
y
w
z
=
,
u v
y x
v w
z y
w u
x z
donde x , y y z son las deformaciones normales, mientras que x y, y z y z x son las deformaciones por
cizalladura.
El vector de tensiones se define como
[]
x
y
= z ,
x y
yz
z x
donde x, y y z son las tensiones normales y x y, y z y z x las tensiones tangenciales.
Para un medio homogneo e isotrpico la matriz constitutiva es [Zien05 p196]
E 1v
D=
1v 12v
1
v
1v
v
1v
v
1v
1
v
1v
v
1v
v
1v
12v
2 1v
12v
2 1v
12v
2 1v
33
[]
ui
ui x , y , z = v i
wi
representa los desplazamientos de un nodo i.
v x , y , z = N i x , y , z v i,
i
w x , y , z = N i x , y , z w i.
i
u , , = N i , , u i,
i=1
4
v , , = N i , , v i,
i=1
4
w , , = N i , , wi;
i=1
donde u , v y w representan los valores discretos de los desplazamientos en los nodos del elemento, N i son
las funciones de forma.
z
4
4
3
2
34
N 3 , , =,
N 4 , , =.
Las funciones de cambio de coordenada son entonces
4
x , , = N i , , xi ,
i=1
4
y , , = N i , , y i,
i=1
4
z , , = N i , , z i;
i=1
Ni
x y z
Ni
x y z
=
x y z
Ni
Ni
x
Ni
y ,
Ni
z
Ni
x
N i e 1
=J
y
Ni
z
Ni
Ni
,
Ni
35
De esta forma
[]
[ ]
[]
x
y
= y =
x y
i
y z
z x
Ni
u
x i
Ni
v
y i
Ni
wi
z
,
Ni
Ni
u
v
y i x i
Ni
Ni
v i
w
z
y i
Ni
Ni
wi
u
x
z i
=
i
Ni
x
Ni
y
Ni
z
Ni
y
Ni
x
Ni
z
Ni
z
[]
ui
v i = B i ui
i
wi
Ni
y
Ni
x
finalmente
=B u.
36
[]
u1
u2
,
un
[]
[]
[]
Ui
qi= V i ,
Wi
el vector de fuerzas sobre el contorno
tx
t= t y
tz
y el vector de fuerzas msicas como
bx
b= b y ,
bz
T dV = u T b dV uT t ds uTi qi.
V
B T D B dV e u= BT D 0 dV e BT 0 dV e b dV e t dse q e
V
V
V
V
s
.
e
Ke
f e
f e
f eb
f et
37
3.1. Introduccin
Nuestra primer aproximacin para paralelizar la solucin del sistema de ecuaciones resultante del mtodo
de elemento finito es utilizar el esquema de paralelizacin con memoria compartida. Veremos como este
tipo de esquema se presta para la paralelizacin del mtodo de gradiente conjugado.
Vamos a comenzar hablando de la arquitectura del procesamiento en paralelo, esto es porque tanto el
hardware como el software utilizados para el cmputo en paralelo son mucho ms complejos y
sofisticados que los utilizado en el cmputo serial, lo que hace que en el cmputo en paralelo sea ms
dificil obtener buenos resultados sobre todo en las primeras implementaciones de los algoritmos.
Es necesario entender, por lo menos conceptualmente, cuales son las caractersticas tanto del hardware
como del software, con el fin de poder disear algoritmos que saquen ventaja de esta forma de cmputo,
de no hacerlo podemos hacer que nuestros algoritmos caigan en los mltiples cuellos de botella que
presentan estas arquitecturas.
Podemos decir entonces que la arquitectura del hardware de cmputo en paralelo nos servir de gua para
disear el software para la paralelizacin de los algoritmos de solucin de problemas de elemento finito.
39
Procesador
Procesador
Core
CPU
Core
CPU
Core
CPU
Core
CPU
Cache
CacheL1
Cache
CacheL1
Cache
CacheL1
Cache
CacheL1
CPU
CPU
CPU
CPU
Cache L1
Cache L1
Cache L1
Cache L1
Cache L2
Cache L2
Al poder accesar la misma memoria es entonces posible hacer que los CPUs cooperen en la resolucin de
un problema. En la taxonomia de Flynn [Flyn72], esta estrategia es conocida como Multiple
Instructions- Multiple Data, o por sus siglas MIMD.
La velocidad de operacin de los procesadores es mucho mayor que la velocidad de acceso de la memoria
RAM de las computadoras [Wulf95], esto es debido a que es muy costoso fabricar memoria de alta
velocidad. Para solventar esta diferencia en velocidad, los procesadores modernos incluyen memoria
cache, en diferentes niveles (L1, L2 y en algunos casos L3). Estas memoria cache son de alta velocidad
aunque de menor capacidad que la memoria RAM del sistema. Su funcin es la de leer de forma
anticipada memoria RAM mientras el CPU est trabajando y modificar la informacin leida de forma
local. Cuando entra nueva informacin al cache la informacin ya procesada es almacenada en la
memoria RAM. Otra de las ventajas del uso de caches es que son adems ms eficientes cuando leen o
escriben localidades de memoria continuas [Drep07 p15].
El uso de caches como un mtodo de acceso intermedio a la memora principal incrementa mucho la
eficiencia de los procesadores mientras mantiene bajos los costos de la computadora. La siguiente tabla
muestra los ciclos de reloj de CPU necesarios para accesar cada tipo de memoria en un procesador
Pentium M:
Acceso a
Registro CPU
L1
L2
Memoria RAM
Ciclos
1
~3
~ 14
~ 240
Sin embargo, mantener coherencia en la informacin cuando varios procesadores accesan la misma
memoria RAM es complejo, los detalles se pueden consultar en [Drep07]. Lo importante a notar es que
para lograr buenos algoritmos en paralelo con memoria compartida es necesario que cada CPU trabaje en
localidades de memoria diferentes, ya que si dos CPU modifican la misma direccin de memoria se crea
una falla en la coherencia entre los caches, lo que obliga a los CPU a accesar a la memoria RAM, lo
cual como vimos es muy costoso. Es muy importante tener en cuenta la arquitectura de caches de los
sistemas multi- core al momento de disear algoritmos en paralelo cuyo requerimiento sea ser muy
eficientes.
40
Otra de las desventajas del esquema de procesamiento en paralelo con memoria compartida es que existe
un cuello de botella en el acceso a la memoria principal, ya que slo un procesador puede accesarla la
vez, esto ser ms y mas notorio cuando el sistema tenga ms procesadores.
Procesamiento
paralelo
CPU 1
CPU 2
CPU
inactivo
CPU 3
CPU 4
CPU
activo
CPU N
Creacin de
los threads
Sincronizacin
t
Figura 3.2. Visualizacin temporal de un proceso ejecutando threads en diferentes procesadores
Hay varias casos en los cuales se puede ver limitada la eficiencia del procesamiento con threads. Por
ejemplo, la dependencia de datos, sta se da cuando un thread tiene que esperar a que otro termine una
41
operacin para poder continuar. Entre ms dependencia exista entre los datos, ms difcil ser paralelizar
un algoritmo. Por ejemplo, el algoritmo de sustitucin hacia atrs para resolver sistemas de ecuaciones
triangulares presenta mucha dependencia para encontrar la solucin de cada incgnita.
Un caso ms complejo sera cuando dos threads modifican los mismos datos, un thread podra entonces
alterar un dato que otro thread espera permanezca constante. Se pierde entonces la sincrona en los
algoritmos. Es necesario implementar sistemas de bloqueo de datos para poder modificar los datos de
forma ordenada. Esto provoca que un thread tenga que parar y esperar a que otro termine para poder en su
momento modificar o leer el valor.
Al repartir un trabajo entre varios threads puede suceder que la carga de trabajo no est balanceada,
provocando que uno o ms procesadores terminen antes y estn inactivos, smplemente esperando.
Entonces nuestro algoritmo ser tan rpido como el ms lento de los threads. Resultando en un
desperdicio de poder de cmputo.
Despus de ver las caractersticas de la programacin con threads y memoria compartida, podemos
buscar entonces un tipo de algoritmo que sea adecuado para funcionar en la paralelizacin de la solucin
de sistemas de ecuaciones. En particular, uno que se ajusta bastante bien a este esquema es el mtodo de
gradiente conjugado, el cual, como veremos tiene la ventaja de ser fcilmente paralelizable utilizando este
esquema de procesamiento en parelelo con memoria compartida.
p Tk b
T
pk A pk
pk , b
.
pk , pk A
A partir de una matriz A de rango n slo se pueden definir n vectores A-conjugados, por lo tanto el
algoritmo de gradiente conjugado garantiza la obtencin de una solucin en un mximo de n iteraciones.
De la frmula de actualizacin
x k1= x k p k,
tomando p como una direccin de descenso.
Definamos
g k = f x k ,
el tamao de paso que minimiza la funcin f x a lo largo de la direccin x k p k es
k =
g Tk p k
p Tk A p k
43
Una frma ms econmica del algoritmo 3.1, en la cual se reduce la cantidad de productos matriz-vector
[Noce06 p112] es la mostrada en el algoritmo 3.2.
sean
x 0, coordenada inicial
g 0 A x 0 b, gradiente inicial
p0 g 0, direccin inicial de descenso
, tolerancia
k 0
inicio
mientras g k 0 , es decir k rank A g k
w A pk
gT g
k kT k
pk w
x k 1 x k k p k
g k 1 g k w
gT g
k k 1T k 1
gk gk
p k 1 g k 1 k 1 p k
k k 1
fin_mientas
fin
Algoritmo 3.2. Gradiente conjugado prctico.
44
sean
x 0, coordenada inicial
g 0 A x 0 b, gradiente inicial
p0 g 0, direccin inicial de descenso
, tolerancia
n Renglones x
k 0
inicio
mientras g k 0 , es decir k rank A g k
q 0, guardar p Tk w
g 0, guardar g Tk g k
paralelizar para i 1n
w i 0
para j 1 n
w i w i A i j p k j
fin_para
q q p k i w i
g g g k i g k i
fin_para
g
k
q
h 0, guardar g Tk 1 g k 1
paralelizar para i 1n
x k 1 i x k i k p k i
g k 1 i g k i k w i
h h g k 1 i g k 1 i
fin_para
h
k
g
paralelizar para i 1n
p k 1 i g k 1i k 1 p k i
fin_para
k k 1
fin_mientas
fin
Algoritmo 3.3. Gradiente conjugado en paralelo.
Se han agrupado las operaciones algebraicas en tres ciclos, quedando slo dos puntos de sincronizacin,
uno para calcular k y otro para k. Es posible reordenar el algoritmo para disminuir an ms los puntos
de sincronizacin [DAze93] manteniendo la estabilidad numrica. Para nuestro programa elegimos
mantener en su escencia el algoritmo 3.2, mostramos un extracto en el algoritmo 3.4.
Vector<T> G(rows); // Gradient
Vector<T> P(rows); // Descent direcction
Vector<T> W(rows); // A*P
omp_set_num_threads(threads);
T gg = 0.0;
#pragma omp parallel for default(shared) reduction(+:gg)
schedule(guided)
for (int i = 1; i <= rows; ++i)
{
T sum = 0.0;
int km = A.RowSize(i);
for (register int k = 0; k < km; ++k)
{
sum += A.Entry(i, k)*X(A.Index(i, k));
}
G(i) = sum - Y(i); // G = AX - Y;
P(i) = -G(i); // P = -G
gg += G(i)*G(i); // gg = G'*G
}
T epsilon = tolerance*tolerance;
int step = 0;
while (step < max_steps)
{
// Test termination condition
if (gg <= epsilon) // Norm(Gn) <= tolerance
{
break;
}
T pw = 0.0;
#pragma omp parallel for default(shared) reduction(+:pw)
schedule(guided)
Algoritmo 3.4. Seccin del cdigo en C++ del algoritmo de gradiente conjugado en paralelo.
45
8
0
2
0
0
4
0
0
9
0
0
1
1
3
0
0
3
0
0
0
0
0
7
0
0
0
0
0
1
5
8
1
1
3
2
1
9
2
5
6
4
2
3
4
1
3
3
3
7
5
1
6
Arreglo de valores
Arreglo de ndices
Con este mtodo, por cada rengln de la matriz se guardan dos arreglos. Uno conteniendo los ndices y
otro los valores de los elementos de ese rengln cuyo valor sea diferente a cero. Si buscamos en un
rengln una entrada con cierto ndice de columna, se tendr un costo de bsqueda del elemento de orden
O n en el peor caso. Sin embargo, tenemos la ventaja que, para el caso de multiplicacin matriz vector el
rden de bsqueda es O 1 , esto es porque no se hace una bsqueda sino que se toman los elementos de
cada rengln uno tras otro.
Otra de las ventajas de utilizar Compressed Row Storage es que los datos de cade rengln de la matriz de
rigidez son accesados en secuencia uno tras otro, esto producir una ventaja de acceso al entrar el bloque
de memoria de cada rengln en el cache del CPU.
Para problemas de elemento finito, es posible conocer la estructura de la matriz de rigidez antes de
llenarla, ya que son conocidas las conectividades de los nodos en el mallado. Si un nodo i est conectado
con un nodo j entonces la matriz rala tendr las entradas i , j , j , i , i , i y j , j distintas de cero.
Conocer de antemano la estructura har ms eficiente la reserva de memoria de cada arreglo de la matriz
rala. Para problemas con m grados de libertad por nodo las entradas de la matriz diferentes de cero sern
imk , jml , jmk , iml , imk ,imk y jmk , jmk , con m , l=0 2.
3.7. Resultados
Los siguientes resultados se refieren a encontrar la deformacin de un slido tridimensional de 2'120,123
elementos y 381,674 nodos, figura 3.4. Con tres grados de libertad por nodo, tenemos entonces, un
sistema de 1'145,022 ecuaciones.
46
Para estas pruebas se utiliz una computadora MacPro 4 con ocho procesadores Intel Xeon a 2.26GHz,
con hyperthreading habilitado (es decir 16 CPUs). La grfica 3.1 muestra los el tiempo que el programa
tard en resolver el problema paralelizando con una cantidad diferente de CPUs en cada una de las 16
pruebas. La primer prueba fue con un CPU, la segunda con dos, y as sucesivamente.
25.00
Tiempo real [m]
Tiempo ideal [m]
20.00
Tiempo [m]
15.00
10.00
5.00
0.00
1
10
11
12
13
14
15
16
Procesadores
Sea t 1 el tiempo que tard el resolverse el problema con un CPU, entonces, en la grfica anterior el
tiempo ideal es t 1 /n, done n es el nmero de procesadores utilizado. Podemos dar una medida de
eficiencia E del algoritmo
t
E= 1 ,
n tn
con t n el tiempo de ejecucin que le tom al programa en terminar el proceso.
47
Eficiencia
0.60
0.50
0.40
0.30
0.20
0.10
0.00
1
10
11
12
13
14
15
16
Procesadores
48
Computadora
Computadora
Procesador Procesador
Procesador Procesador
Procesador Procesador
Memoria
Memoria
Memoria
Interfaz de red
Interfaz de red
Interfaz de red
Switch de red
Interfaz de red
Interfaz de red
Memoria
Memoria
Procesador Procesador
Procesador Procesador
Computadora
Computadora
En su forma bsica, el modelo MPI permite ejecutar un mismo programa en varias computadoras y en
varios procesadores dentro de cada computadora. A cada instancia del programa (proceso) se le asigna un
49
nmero de rango que va de 0 a N 1, donde N es el nmero de instancias del programa. Visto de forma
conceptual, la operacin de MPI es una red de comunicacin donde todos los procesos pueden mandar
datos (o mensajes) a todos los procesos, ver figura 4.2.
Proceso
rango 1
Proceso
rango 0
Proceso
rango N-1
Proceso
rango 2
Proceso
rango 3
Proceso
rango 4
Ningun proceso tiene prioridad sobre otro, aunque se suele dejar al proceso con rango cero el control de
todos los dems. La comunicacin entre los procesos es transparente para el usuario y se selecciona de
forma automtica, sta puede ser establecida utilizando sockets TCP/IP en el caso de que los procesos
estn en diferentes computadoras, o utilizando memoria compartida monitoreada con polling en el caso de
que los procesos residan en la misma computadora.
50
2
1
Las fronteras 1 y 2 son fronteras artificiales y son la parte de las fronteras de 1 y 2 que estn en el
interior de . Para resolver una ecuacin diferencial, siendo L un operador diferencial, tenemos
L x= y en ,
x=b sobre .
El mtodo alternante de Schwarz consiste en resolver de cada particin de forma independiente, fijando
condiciones de Dirichlet en las fronteras artificiales de cada particin con los valores de la iteracin
previa de la particin adyacente.
51
q
2
2
2
2
1
Figura 4.5. Descomposicin con traslape de un dominio con diferentes capas de traslape.
Las fronteras virtuales se formarn con los nodos que estn en la parte ms exterior del traslape. El
intercambio de valores ser entonces con los resultados encontrados en unos nodos fantasma que se
encontrarn en la particin adyacente.
4.2.3. Velocidad de convergencia
La velocidad de convergencia al utilizar descomposicin de dominios se deteriora conforme se aumenta el
nmero de particiones [Smith96 p53]. Esto puede verse de forma heurstica como sigue. Considerese el
dominio de la figura 4.6, el cual est dividido en N particiones.
52
En cada iteracin del metodo alternante de Schwarz solo transferir informacin entre las particiones
adyacentes. Entonces, si se tiene una condicin de frontera diferente de cero en la primer particin, y se
inicia en la iteracin 0, le tomar N iteraciones para que la solucin local en la particin N sea diferente
de cero. Por tanto, el algoritmo alternante de Schwarz impone lmites en la velocidad en la cual la
informacin es transferida globalmente a travs de todo el dominio.
El algoritmo de Schwarz tpicamente converge a una velocidad que es independiente (o ligeramente
dependiente) de la densidad de la malla y de la particin, cuando el traslape entre las particiones es
suficientemente grande [Smith96 p74].
53
23
21
19
5
6
22
12
23
20
16
11
16
18
1
15
12 18
19
10
9
8
17
11
26
13
14
25
24
3
28
15
10
20
27
E
1
2
3
4
5
6
7
8
9
10
11
12
13
14
14
13
22
17
21
n
15
1
23
14
19
16
19
12
19
17
11
13
11
11
n
10
3
22
17
21
21
16
16
12
8
16
16
13
7
n
18
2
21
9
16
22
12
11
17
9
13
22
7
4
E
15
16
17
18
19
20
21
22
23
24
25
26
27
28
n
4
7
6
8
8
6
5
20
22
3
10
11
18
2
n
7
13
9
17
12
8
2
18
20
6
5
4
10
3
n
5
18
8
12
11
4
4
13
13
4
7
8
7
4
Para realizar la particin inicial del dominio nuestro programa utiliza la librera de software METIS
[Kary99], sta recibe como entrada la tabla de conectividades y un nmero que indica las particiones
requeridas. La figura 4.8 muestra el resultado entregado por esta librera, indicaremos los elementos de la
primer particin como EP1 y los de la segunda como EP2. La librera indica a que particin pertenece cada
nodo, solo divide los elementos.
23
21
19
5
6
22
23
20
16
12
11
19
16
14
17
10
20
24
3
28
15
25
15
9
8
27
21
EP1
3
5
6
7
8
9
11
12
22
23
10
26
13
18
14
4
11
13
22
17
9
7
12 18
2
2
EP2
1 18
2 19
4 20
10 21
13 24
14 25
15 26
16 27
17 28
Buscando en la tabla de conectividades determinamos que nodos pertenecen a cada elemento en cada
particin. Indicaremos los nodos de la primer particin como nP 1 y los de la segunda como nP 2. Los
nodos pueden pertenecer a ms de una particin, como se observa en la figura 4.9.
23
21
19
5
6
22
12
23
20
16
11
13
22
18
1
15
10
19 8
26
14
7
25
10
12 18
11
27
15
5
14
4
11
13
16
17
12
13
18
17
9
9
17
20
24
28
21
2
2
nP1
11
12
13
16
17
18
19
20
21
22
23
nP2
1 10
2 11
3 12
4 13
5 14
6 15
7 17
8 18
9
Para definir qu nodos pertencen a la frontera entre las particiones, buscamos los nodos que aparezcan en
ms de una particin. En el caso de la figura 4.10, que aparezcan tanto en nP1 como en nP2.
54
21
19
5
6
22
23
20
16
12
11
19
17
10
20
24
3
28
15
25
15
9
8
21
nP1
11
12
13
16
17
18
19
20
21
22
23
10
26
14
27
14
4
11
13
16
18
13
22
17
9
12 18
2
2
nP2
1 10
2 11
3 12
4 13
5 14
6 15
7 17
8 18
9
21
19
5
6
22
12
23
20
16
11
12 18
26
14
17
15
25
10
20
24
27
15
11
16
1
10
19 8
13
18
14
4
11
13
18
17
12
13
22
17
9
21
FP2
11
12
13
17
18
28
FP1
11
12
13
17
18
2
2
Aumentar una capa de traslape significa que se agregarn a la sub-particin los elementos que compartan
nodo en la frontera, pero que no estn en dicha sub-particin. Los nodos de estos nuevos elementos que
no estn en la sub-particin se agregarn y formarn la nueva frontera, suplantando a la anterior. En la
figura 4.12 se observa cmo se agrega una capa de traslape a cada particin, se denotan los elementos
agregados y la nueva frontera formada.
23
21
3
6
22
16
12
23
20
11
13
22
13
16
18
1
15
19
5
27
10
17
9
12 18
19
14
19
4
10
9
11
12
23
26
14
16
22
20
11
13
22
13
16
18
1
15
25
10
19
10
9
8
26
14
15
5
14
4
11
27
17
9
7
12 18
17
20
24
28
21
2
2
FP1
4
7
8
9
10
14
15
FP2
16
19
20
22
EP1
1 12
3 13
4 14
5 16
6 18
7 19
8 22
9 23
10 26
11 27
EP2
1 17
2 18
4 19
7 20
8 21
9 22
10 23
11 24
12 25
13 26
14 27
15 28
16
nP1
4 15
7 16
8 17
9 18
10 19
11 20
12 21
13 22
14 23
nP2
1 12
2 13
3 14
4 15
5 16
6 17
7 18
8 19
9 20
10 22
11
Este proceso se puede repetir tantas veces como capas de traslape se deseen agregar a cada particin. La
frontera final ser la frontera artificial del mtodo alternante de Schwarz, en la cual se impondrn
condiciones de Dirichlet antes de solucionar el sistema local de ecuaciones de la particin.
Ahora es necesaria la renumeracin local a cada particin de elementos y nodos. Primero se renumeran
los elementos y en base a estos los nodos. Este paso es necesario ya que cada sub-malla se procesar por
separado como si se tratase de un problema independiente. La figura 4.13 muestra el reordenamiento para
nuestro ejemplo, las tablas indican la numeracin local y global, tanto de elementos como de nodos.
55
2
3
8
10
10
9
11
7
11
16
8
6
6 15
4
5
15
17
18
16
13 14
7
14
12
12
13
20
19
17
18
20
23
25
20
12
24
5
8
3
1
1
E
3
5
6
7
8
9
11
12
22
23
EP1
11
12
13
14
15
16
17
18
19
20
E
13
14
19
26
18
16
4
10
1
27
EP2
1
2
3
4
5
6
7
8
9
10
11
12
13
E
1
2
4
10
13
14
15
16
17
18
19
20
21
EP2
14
15
16
17
18
19
20
21
22
23
24
25
E
24
25
26
27
28
8
11
7
9
12
22
23
nP1
1
2
3
4
5
6
7
8
9
n
23
22
21
19
16
12
11
17
13
nP1
10
11
12
13
14
15
16
17
18
n
20
18
7
4
8
14
9
15
10
nP2
1
2
3
4
5
6
7
8
9
10
11
n
15
10
18
1
3
2
14
17
9
8
11
nP2
12
13
14
15
16
17
18
19
20
21
n
13
7
4
5
6
12
16
19
22
20
18
19
21
EP1
1
2
3
4
5
6
7
8
9
10
19
15
2
7
3
4
9
11 10
11
16
6
13
17
22
21 10
17
7
15
12
14
16
14
5
18
13
2
6
Esta numeracin funciona bien para solvers iterativos (por ejemplo con gradiente conjugado), pero es
inadecuada para solvers directos como la factorizacin Cholesky. Cuando se aplica la factorizacin
Cholesky a una matriz, la cantidad de nodos no cero en la matriz factor L depende del rden de los nodos
en la malla o lo que es equivalente, el rden de los renglones y columnas en la matriz de rigidez. Cuando
se utiliza el solver con factorizacin Cholesky ser necesario agregar un paso extra que imponga una
enumeracin de los nodos ms adecuada, para una descripcin ms extensa de este caso consultar el
captulo 5.
El paso final es crear enlaces entre los nodos en la frontera artificial de cada sub-malla con su
correspondiente nodo fantasma en la otra sub-malla. Estos enalces sern utilizados para intercambiar
informacin entre las particiones. Se tendrn una lista de nodos fantasma para cada particin. Cada enlace
guarda dos datos, el ndice del nodo en la frontera artificial con la numeracin local y el ndice del nodo
fantasma con la numeracin correspondiente en la particin adyacente. En la figura 4.14 se muestran los
enlaces formados entre los nodos en la frontera artificial y los nodos fantasma en la otra particin.
56
2
3
8
10
9
11
15
19
17
18
16
13 14
12
12
21
13
18
4
2
5
8
10
10
9
11
7
9
11
16
20
19
17
18
12
8
6
6 15
4
5
6
7
21
18
20
23
25
14
21
13
Nodo en
la frontera
artificial
20
12
24
5
8
3
1
1
15
2
9
12
13
nP2
7
9
10
14
13
2
1
gP2
1
2
3
4
nP2
19
18
20
21
nP1
4
5
2
10
7
3
4
9
9
11
16
nP1
15
16
14
13
12
18
17
gP1
1
2
3
4
5
6
7
11 10
15
16
18
22
17 10
19
Nodo
fantasma
14
13
17
14
19
7
12
16
15
15
11
15
2
7
3
11 10
13
18
13 14
19
17
17
16
22
21 10
17
3
3
12
24
20
19
23
25
14
20
17
18
20
11
16
Nodo
fantasma
10
Nodo en
la frontera
artificial
8
6
6 15
12
14
16
14
5
18
13
2
6
Para realizar particionamientos con ms de dos particiones se requerir guardar una lista de enlaces por
cada particin con la que se tenga una frontera artificial.
El ejercicio de realizar el particionamiento del dominio en tres dimensiones es ms complicado de
visualizar, pero se siguen exactamente los mismos pasos, la nica diferencia es la cantidad de nodos por
elemento. La figura 4.15 muestra el ejemplo de un dominio en tres dimensiones dividido en 16
particiones con traslape.
57
Maestro
MPI_Init
Esclavos i=1 , , P
MPI_Init
58
3. Ya con las particiones independientes se generan los problemas individuales, cada uno tiene sus propias
condiciones de frontera. El nodo maestro entra en un ciclo i=1, , P en el cual se envian los siguientes
datos correspondientes a cada particin i utilizando la funcin MPI_Send: N i coordenadas de los nodos,
i
i
E tabla de conectividades de los elementos, C condiciones de frontera; se envian en un ciclo j=1, , P
i j
con ji los L enlaces con los indices de los nodos de frontera artificial y su correspondiente nodo
fantasma en la particin j. Con la funcin MPI_Irecv i , si se crea una peticin sin bloqueo del estatus
del nodo i, esto le permite al nodo maestro seguir enviando datos sin esperar a que los esclavos estn
listos. Por su parte cada esclavo utilizar la funcin MPI_Recv para recibir todos estos datos. Cada
esclavo generar su sistema de ecuaciones y cuando est listo enviar su estatus s i al nodo maestro. Todo
esto es indicado en la figura 4.18.
Maestro
Esclavo
Esclavo 22
MPI_Send i , N i
MPI_Send i , E i
MPI_Send i ,C i
MPI_Send i , Li j
MPI_Irecv i , si
MPI_Waitall si
Esclavo
Esclavo 33
Esclavos i=1 , , P
Maestro
Maestro
Esclavo
Esclavo 11
MPI_Recv 0, N i
MPI_Recv 0, E i
MPI_Recv 0,C i
MPI_Recv 0, Li j
MPI_Send 0, si
Esclavo
Esclavo 44
Con la funcin MPI_Waitall si el nodo maestro espera el estatus de todos los esclavos antes de
continuar.
59
4. En este punto el programa comienza a iterar hasta que se logre la convergencia del algoritmo 4.1. En
cada esclavo el sistema de ecuaciones es resuelto localmente. Al terminar cada esclavo envia la diferencia
entre la solucin anterior y la actual d i al nodo maestro, el cual evalua la convergencia global del
problema. En caso de que el problema llegue a una convergencia se continuar al paso 6. Ver figura 4.19.
Esclavo
Esclavo22
Esclavo
Esclavo33
Maestro
MPI_Irecv i , d i
MPI_Waitall d i
Esclavos i=1 , , P
Maestro
Maestro
MPI_Send 0, d i
Esclavo
Esclavo11
Esclavo
Esclavo44
5. Si an no se ha logrado la convergencia global, entonces los esclavos solicitarn los valores en los
nodos fantasma a cada una de las particiones adyacentes con la funcin MPI_Irecv j , Gi j , con
j=1, , P, i j, al mismo tiempo enviara los valores de los nodos fantasma que soliciten las otras
particiones con el la funcin MPI_Isend j , G j i , j=1, , P, i j. Con la funcin MPI_Wait esperaran a
que todas las transacciones con las particiones adyacentes hayan concluido. Ntese en la figura 4.20 que
el nodo maestro no interviene en este paso.
Esclavo
Esclavo22
Esclavo
Esclavo33
Esclavos i=1 , , P
MPI_Irecv j ,G i j
MPI_Isend j ,G j i
MPI_Waitall G i j
MPI_Waitall G j i
Maestro
Maestro
Esclavo
Esclavo11
Esclavo
Esclavo44
60
Maestro
Esclavo
Esclavo22
MPI_Recv i , ui
MPI_Recv i , i
MPI_Recv i , i
Esclavo
Esclavo33
Esclavos i=1 , , P
MPI_Send 0,u i
MPI_Send 0, i
MPI_Send 0, i
Maestro
Maestro
Esclavo
Esclavo11
Esclavo
Esclavo44
7. El nodo maestro generar una solucin global conjuntando los resultados de todas las particiones,
figura 4.22. Los nodos salen del esquema MPI llamando la funcin MPI_Finalize.
Maestro
MPI_Finalize
Esclavos i=1 , , P
MPI_Finalize
61
Multiplicaciones y divisiones
1
6
Simtrica completa
Simtrica bandada
1
2
1
2
Sumas
2
3
1
6
n n n
b b3 n 13 b 3b 2 23 b
1
2
Almacenamiento
1
6
1
2
n n
n 2 12 n
b b1 n 13 b 3 12 b2 16 b b1 n 12 b2 12 b
n1
i=1 r i r i3 / 2
Simtrica rala
n1
i=1 r i r i 1 / 2
nn1
i=1 r i
Para el caso del algoritmo de sustitucin hacia atrs, los costos operacin se muestran en la tabla 5.2
[Piss84 p64].
Matriz
Simtrica completa
Simtrica bandada
Simtrica rala
Multiplicaciones y divisiones
2
n
2 b1 nb2 b
n2n1
i=1 r i
Sumas
n2n
2b nb2b
2n1
i=1 r i
Debido a la dependencia entre las variables, no es sencillo paralelizar la factorizacin Cholesky [Heat91],
sin embargo, podemos aumentar el nmero de particiones para as obtener sistemas individuales de menor
tamao, lo que resultar a su vez en una factorizacin ms rpida.
Utilizaremos dos estrategias para disminuir el uso de tiempo y memoria de la factorizacin Cholesky. La
primer estrategia es reordenar los renglones y columnas de la matriz del sistema de ecuaciones para
reducir el tamao de las matrices resultantes de la factorizacin. La segunda estrategia es utilizar la
63
factorizacin Cholesky simblica para obtener la factorizacin exacta y formar con esta matrices ralas
que no tengan elementos cero. La combinacin de ambas estrategias reducir tanto el tiempo de ejecucin
como la memoria utilizada.
nn
A x= y,
(5.1)
simtrica positiva definida puede ser resuelto aplicando a esta matriz la
T
A=L L ,
donde L es una matriz triangular inferior. sta factorizacin existe y es nica [Quar00 p80].
(5.2)
(5.3)
L i i= Ai i L2i k.
(5.4)
i1
1
L i j=
A L L , para i j
L j j i j k=1 i k j k
i1
k =1
L L x= y,
T
hagamos z =L x y entonces tendremos dos sistemas de ecuaciones
L z= y,
T
L x=z,
con (5.5) se resuelve para z haciendo una sustitucin hacia adelante con
i 1
1
zi =
y L z
Li ,i i k =1 i ,k k
1
x i = T z i LiT, k x k .
Li , i
k=i1
64
(5.5)
(5.6)
Ahora veamos en la figura 5.2 tenemos que la matriz de rigidez A' con A' =1810 (con la misma
cantidad de elementos no nulos que A) y su factorizacin L ' tiene L' =3215. Ambas factorizaciones
permiten resolver el mismo sistema de ecuaciones. Para determinar este reordenamiento utilizamos las
rutinas de la librera METIS [Kary99].
Figura 5.2. Representacin de los elementos no cero de una matriz reordenada A' (izquierda)
y su correspondiente factorizacin L ' (derecha).
65
[ ]
* *
*
* * * *
* *
*
*
*
*
* *
*
* *
Matriz A
4
5
6
Grafo G A
Figura 5.3. Una matriz y su grafo ordenado, con * se indican las entradas no cero de A'.
estructura de A sin sugerir un orden en particular. Esta representa la equivalencia de las clases de matrices
P A P T. Entonces, encontrar una buena permutacin de A equivale a encontrar un buen ordenamiento
de su grafo [Geor81]. La figura 5.4 muestra un ejemplo.
1 2 3 4 5 6
1
2
3
4
5
6
[ ]
* *
* * *
*
* * *
* * *
* * *
*
* *
1
4
5
Matriz P A P T
Grafo G P A P
[ ]
* *
*
* * * *
* *
*
*
*
*
* *
*
* *
Y ={ x 1 , x 2}
adj Y = { x 3 , x 4 , x 6 }
4
5
6
gr x 2 =3
67
Cuando el grado mnimo se presenta en varios nodos, usualmente se elige uno de forma arbitraria. El
ejemplo del reordenamiento obtenido en la figura 5.4 se obtiene aplicando el algoritmo de grado mnimo
con la secuencia mostrada en la tabla 5.3.
ii
Grafo de eliminacin Gi 1
Grado
mnimo
Nodo
elegido
5
6
1
5
1
5
6
6
0
6
Tabla 5.3. Numeracin usando el algoritmo de grado mnimo.
68
algoritmo comparado con el de grado mnimo es la velocidad y el poder predecir las necesidades de
almacenamiento. La ordenacin producida es similar a la del algoritmo de grado mnimo.
Vamos a introducir la definicin de separador. El conjunto S X es un separador del grafo conectado G si
el grafo seccin G X S est desconectado. Por ejemplo, en la figura 5.6 se muestra que S ={ x 3 , x 4 , x5 }
es un separador de G, dado que G X S tiene tres componentes, los conjuntos de nodos { x 1 }, { x 2 } y
{ x 6 , x 7} .
5
1
2
3
4
6
7
Figura 5.6. Ejemplo de un conjunto separador S.
C1
C2
A1 0 V 1
0 A2 V 2
V 1T V T2 AS
S
Figura 5.7. El efecto de un conjunto separador S en una matriz.
Esta procedimiento aplicado de forma de forma recursiva se conoce como algoritmo de diseccin anidada
generalizado [Lipt77].
La idea es tratar de dividir el grafo tratando de que sean de igual tamao con un separador pequeo. Para
encontrar este separador se busca generar una estructura grande y entonces elegir un separador de un
nivel medio. Este es un algoritmo recursivo que emplea la estrategia de divide y vencers, a continuacin
describimos el algoritmo.
Sea S una clase de grafos cerrados en los cuales se cumple el teorema del separador n [Lipt79]. Sean ,
constantes asociadas con el teorema del separador y sea G X , E un grafo de n nodos en S. El algoritmo
recursivo 5.2 numera los nodos de G tal que la eliminacin gaussiana rala (factorizacin Cholesky rala) es
eficiente. El algoritmo supone que l de los nodos de G ya contienen nmeros asignados, cada uno de los
69
cuales es ms grande que b (se explica ms adelante). El objetivo es numerar los nodos restantes de G
consecutivamente de a a b.
Sea dado G X , E
inicio
2
si G
1
Los nodos son ordenados arbitrariamente de a a b (puede utilizarse el algoritmo de
grado mnimo)
si_no
Encontrar conjuntos A, B y C que satisfagan el teorema del separador n, donde C
es el conjunto separador. Al remover C se divide el resto de G en dos conjuntos A
y B los cuales no tienen que ser conexos. Sea A conteniendo i nodos no
numerados, B contiene j y C contiene k nodos no numerados.
Numerar los nodos no numerados en C de forma arbitraria de bk 1 a b, es decir,
estamos asignando a los nodos de C los nmeros ms grandes.
Eliminar todos las aristas cuyas conexiones estn ambas en C.
Aplicar el algoritmo recursivamente al subgrafo inducido por BC para numerar
los nodos no numerados en B de a bk j1 a b bk.
Aplicar el algoritmo recursivamente al subgrafo inducido por AC para numerar
los nodos no numerados en B de a bk ji1 a b bk j.
fin_si
fin
Algoritmo 5.2. Algoritmo de diseccin anidada generalizado.
Se inicia el algoritmo 5.2 con todos los nodos de G no numerados, con a 1, b n y l 0. Esto enumerar
los nodos en G de 1 a n . En este algoritmo los nodos en el separados son incluidos en la llamada recursiva
pero son no numerados.
Una versin mejorada de este algoritmo es la empleada en la librera METIS [Kary99], sta es la que
hemos utilizado en la implementacin de nuestro programa.
A k j0 }, j=1 n
(5.7)
como el conjunto de los ndices de los elementos no nulos de la columna j de la parte estrictamente
triangular inferior de A.
De forma anloga definimos para la matriz L, los conjuntos
l j { k j Lk j 0 } , j=1 n.
70
(5.8)
Requeriremos de conjuntos r j que sern usados para registrar las columnas de L cuyas estructuras
afectarn a la columna j de L.
para j 1n
rj
lj aj
para i r j
l j l j l i { j }
fin para
min {i l j } si l j
p
j
otro caso
r p r p{ j }
fin para
Algoritmo 5.3. Factorizacin Cholesky simblica.
71
GH
5
6
2
GH
[ ]
*
*
H 1= *
* *
#
*
*
*
*
* *
#
* *
3
4
[ ]
* *
*
* * * *
* *
*
H 0=
*
*
*
* *
*
* *
[ ]
* # * #
#
H 2= # *
*
* *
# # * *
* # #
H 3= # * *
# * *
H2
GH
GH
GH
[ ]
[ ]
H 4= * *
* *
H 5=[ * ]
6
Figura 5.8.Secuencia de grafos de eliminacin.
El grafo llenado y su matriz correspondiente se muestran en la figura 5.9, las entradas nuevas se indican
con #. Sea L la matriz triangular factor de la matriz A. Definamos el grafo llenado de G A como el grafo
simtrico G F = X F , E F , donde F =L LT. As el conjunto de aristas E F consiste de todas las aristas en
E A junto con todos las aristas agregadas durante la factorizacin. Obviamente X F = X A .
1
3
4
5
6
* *
* * *
* *
F =L LT=
* #
*
* # #
*
# *
* #
# *
# *
72
*
#
#
#
*
*
5.5. Implementacin
5.5.1. En dos dimensiones
La grfica 5.1 muestra los resultados obtenidos con la implementacin del algoritmo de factorizacin
Cholesky simblica para la solucin de un problema de elemento finito en dos dimensiones. Como
comparacin extra se muestran los tiempos de solucin utilizando el algoritmo de gradiente conjugado sin
paralelizar. Al igual que en la implementacin del mtodo del gradiente conjugado, 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 figura 5.10, con diferentes densidades de malla.
No es posible mostrar un comparativo con una factorizacin clsica de Cholesky para un matriz completa,
dado que la cantidad de memoria utilizada an para matrices de tamao reducido es excesiva. Por
ejemplo, para una matriz de 100,000x100,000 entradas se necesitaran 40 gigabytes de memoria (con
doble precisin).
5,000
Cholesky
(primer versin)
Tiempo [s]
4,000
Cholesky
(segunda versin)
Gradiente conjugado
Cholesky
(Versin final)
3,000
2,000
1,000
0
0
50,000
100,000
150,000
200,000
250,000
300,000
Una vez implementada la primer versin se realiz un anlisis de los cuellos de botella del algoritmo 5.3.
El primer cuello de botella fue en el llenado de las columnas l j. Para reducir el tiempo tratando de
minimizar el uso de memoria usamos una matriz de bits triangular inferior que almacena valores true si la
entrada existir en L y false en caso contrario. Como mejora posterior se cambi el formato de sta matriz
a sky- line, con lo que se logr una reduccin en el uso de memoria en la factorizacin simblica en
aproximadamente un 66%.
La segunda versin del algoritmo se toma en cuenta la modificacin del cuello de botella que daba el
mayor tiempo de procesamiento, la ecuacin (5.3) en la bsqueda de las entradas L j k. Para mejorar la
bsqueda se opt por reordenar las entradas de los los elementos de las matrices ralas en base a sus
ndices. Si los ndices de las entradas por rengln no son ordenadas, se tendr un costo de bsqueda de la
entrada de orden O n en el peor caso. Al ordenar y aplicar un algoritmo de bsqueda binaria, se redujo el
costo de la bsqueda a un orden O log 2 n en el peor caso. Tenemos la ventaja que, para el caso de
multiplicacin matriz vector, el orden de bsqueda sigue siendo O 1 . Esto es porque no se hace una
bsqueda sino que se toman los elementos de cada rengln uno tras otro.
La versin final del algoritmo tiene considerable mejora con respecto a la segunda versin. Se modific el
acceso a las entradas L i k y L j k de tal forma que no se hicieran bsquedas. El algoritmo final recorre los
ndices de los renglones i y j de la matriz rala L , tomando en cuenta slo los ndices comunes para
calcular (5.3). Una vista a detalle de la grfica 5.1 es mostrada en la grfica 5.2.
300
Cholesky
(primer versin)
250
Cholesky
(segunda versin)
Tiempo [s]
Gradiente conjugado
200
Cholesky
(Versin final)
150
100
50
0
0
50,000
100,000
150,000
200,000
250,000
300,000
La identificacin de estos cuellos de botella y su correccin reducen el tiempo de solucin del algoritmo
como se muestra en la grfica 5.1. Se logr que la solucin de los sistemas de ecuaciones utilizando la
factorizacin Cholesky simblica sea ms rpida que la solucin con gradiente conjugado.
La grfica 5.3 indica la utilizacin de memoria comparando el algoritmo final de factorizacin Cholesky
simblica con respecto al gradiente conjugado.
74
Gradiente conjugado
800,000,000
Cholesky
600,000,000
400,000,000
200,000,000
0
0
50000
100000
150000
200000
250000
300000
Grfica 5.3. Comparativo de utilizacin de memoria de los algoritmos de gradiente conjugado y Cholesky.
Es claro que el algoritmo de factorizacin Cholesky utiliza mucha ms memoria que el gradiente
conjugado.
75
6. Resultados
6.1. Preparacin
La tabla 6.1 resume las caractersticas del cluster de cmputo con el cual se realizaron las pruebas que se
muestran a continuacin.
Nodo Maestro
Cluster 1
16 Nodos Esclavos
Cluster 2
15 Nodos Esclavos
Red
Sistema operativo
Compiladores
Librera MPI
Total
A fin de poder valorar la escalabilidad de las estratgias de solucin se utilz un solo problema para hacer
pruebas, ste es mostrado en la figura 6.1.
Figura 6.1. Descripcin del problema patrn (iquierda problema, derecha solucin).
El problema consiste en arco en dos dimensiones compuesto de un solo material, las condiciones de
frontera impuestas son: las bases del arco estn fijas, en la parte superior derecha se impone un
77
6. Resultados
desplazamiento vertical. Al problema se le generarn mallas de elemento finito con diferentes grados de
refinamiento y se resolver utilizando diversas estratgias, las cuales se describen a continuacin.
Figura 6.2. Diagrama del resultado del problema de ejemplo en dos dimensiones.
La primer columna de la grfica 6.1 muestra el resultado de este problema, utilizando una sola
computadora del cluster (sin descomposicin de dominio) resolviendo el sistema de ecuaciones completo
utilizando gradiente conjugado paralelizado con 4 CPUs con memoria compartida, el tiempo que tard en
resolver el sistema fue de 82.62 minutos. Este resultado nos servir como una referencia de cunto ms
eficiente es la solucin del problema utilizando descomposicin de dominios.
6.2.1. Gradiente conjugado paralelizado
En las siguientes pruebas se sigui utilizando el Cluster 2 del CIMAT, utilizamos las 14 computadoras
del cluster, cada una con cuatro procesadores, lo que nos da un total de 56 CPUs.
En la segunda columna de la grfica 6.1 mostramos el resultado de utilizar el esquema hbrido en una
descomposicin de dominios de 14 particiones (una por nodo) con 20 capas de traslape, utilizando como
solver el gradiente conjugado paralelizado en cada computadora con 4 CPUs con memoria compartida. El
tiempo total para resolver el sistema fue de 941.02 minutos. Es decir, 11.38 veces ms lento que el
resultado de la primer columna.
78
6. Resultados
1000.00
Tiempo total
900.00
800.00
Tiempo [m]
700.00
600.00
500.00
941.02
400.00
300.00
200.00
322.34
100.00
0.00
82.62
G.C. paralelo
El problema que encontramos con este esquema es que el tiempo que requiere el gradiente conjugado
para converger es muy diferente en cada una de las particiones. Las grficas de la figura 6.3 muestran la
carga de procesamiento durante 21 iteraciones de Schwarz en dos nodos del cluster, el ms eficiente y el
menos eficiente, a la izquierda y a la derecha respectivamente. En el nodo ms eficiente se ve que despus
de terminar de resolver el sistema tiene periodos de baja actividad, durante este tiempo este nodo est
esperando que los otros nodos terminen. En comparacin, el nodo menos eficiente tarda ms en resolver
el sistema de ecuaciones, al ser el ms lento no muestra periodos de espera, en la grfica se aprecia que
est trabajando continuamente. El nodo menos eficiente alenta a todos los nodos del cluster.
Figura 6.3. Diferencia de carga en los nodos ms eficiente (izquierda) y menos eficiente (derecha)
Como resultando tenemos un gran desbalance de carga que hace que la mayora de los procesos estn
inactivos casi un 50% del tiempo Esto provoca que la eficiencia de operacin del cluster se reduzca
significativamente, como se aprecia en la figura 6.4, la cual muestra el nivel de operacin de todo del
cluster.
79
6. Resultados
80
6. Resultados
90
Tiempo total
80
Tiempo de
f actorizacin
70
Tiempo [m]
60
50
40
82.62
30
20
10
6.34
0
G.C. paralelo
El tiempo utilizando gradiente conjugado en paralelo en una computadora fue de 82.62 minutos, el tiempo
con descomposicin de dominio y factorizacin Cholesky en 14 computadoras fue de 6.34 minutos. Se
tuvo la solucin aproximadamente 13 veces ms rpido. Esto se debe a que el tiempo por iteracin
Schwarz es muy reducido, ya que solo se resuelven dos matrices triangulares con sustitucin hacia atrs y
hacia adelante en cada particin. El ahorro en tiempo es notable.
6. Resultados
La grfica 6.3 muestra la convergencia d i de cada particin, medida como la norma ponderada de la
diferencia entre la solucin actual y la anterior
uit 1uit
d=
,
uit
i
norm(x' - x)/norm(x)
1E-1
P1
P2
P3
P4
1E-2
1E-3
1E-4
1E-5
1E-6
78
75
72
69
66
63
60
57
54
51
48
45
42
39
36
33
30
27
24
21
18
15
12
1E-7
Iteration
En problemas con mallas ms grandes se ven otro tipo de efectos. Los siguientes resultados muestran la
evolucin de la convergencia del problema de la figura 6.1 dividido en 3960,100 elementos y 1985,331
nodos (3970,662 ecuaciones), utilizando 30 particiones. En la grfica 6.4 se ve la evolucin con una capa
de traslape. Esta es interesante, se ve que en las primeras iteraciones hay unos picos donde empeora la
convergencia en algunas particiones, para despus mejorar.
82
6. Resultados
La grfica 6.5 se ve la evolucin del mismo problema, pero utilizando siete capas de traslape. En sta se
observa que los valores de la convergencia d i presentan los mismos picos pero de forma ms temprana.
16.0
Time [s]
12.0
8.0
4.0
-31
-28
-27
-26
-32
ute-0
c omp
ute-0
c omp
ute-0
c omp
ute-0
c omp
-25
ute-0
ute- 0
-24
ute- 0
c omp
c omp
c omp
-22
ute- 0
-23
c omp
-20
-21
ute-0
c omp
ute-0
c omp
-19
ute-0
ute-0
c omp
-18
ute-0
-17
ute-0
c omp
c omp
-16
ute- 0
Solver
c omp
-15
ute-0
c omp
ute- 0
-14
c omp
c omp
-12
-11
ute- 0
-13
c omp
ute-0
c omp
ute-0
-10
c omp
ute-0
c omp
ute- 0
-9
c omp
-6
-5
-4
-3
ute- 0
-7
c omp
ute-0
c omp
ute-0
c omp
ute-0
c omp
-2
ute-0
c omp
-1
-0
ute-0
c omp
ute-0
c omp
c omp
ute-0
0.0
Se observa que el tiempo utilizado por el solver vara en cada nodo, todos los nodos tienen que esperar al
solver ms lento, el del nodo 16 en este caso.
83
6. Resultados
6.6. Traslape
Los siguientes resultados son para un problema de dos dimensiones con 3960,100 elementos y 1985,331
nodos (3970,662 ecuaciones), dividido en 52 particiones resuelto con factorizacin Cholesky simblica.
Tolerancia
Traslape
1x10-4
10.43
9.26
9.69
9.91
10.35
10.74
11.28
11.86
3
6
9
12
15
18
21
24
35
1x10-5
32.38
25.59
22.25
20.31
19.42
18.79
18.42
18.72
32.38
30
25.59
Time [m]
25
1E-4
1E-5
22.25
20.31
20
19.42
18.79
18.42
18.72
10.74
11.28
11.86
10.35
15
10.43
9.26
10
9.91
9.69
0
0
10
15
20
25
Capas de traslape
Grfica 6.7. Eficiencia en tiempo variando las capas de traslape entre las particiones.
6. Resultados
varios threads, el problema es que estos threads, que pueden llevar el uso del CPU al 100%, son
asignados por el sistema operativo para ejecutarse en los otros CPU de la computadora, lo que alenta en
gran medida los procesos asignados previamente a estos CPU. Como todos los procesos crean threads
para comunicarse con los otros procesos en la misma computadora se produce una cada de la eficiencia
considerable al interferirse entre ellos.
La solucin que encontramos fue establecer la afinidad a los procesos a un CPU, de esta forma los threads
creados por este proceso se ejecutarn en el mismo CPU que el proceso. De tal forma que si un proceso
espera datos no interferir con los procesos que an estn realizando clculos.
Encontramos dos formas de establecer la afinidad de CPU, una es utilizando el programa taskset, que es
parte de las utileras del kernel de Linux. Este programa permite asignar a un proceso un CPU
determinado, encerrando sus threads en el mismo CPU. La segunda forma es utilizando una modalidad
de OpenMPI en la cual es posible asignar a cada proceso, utilizando su nmero de rango, un CPU en
particular del cluster.
Este problema no aparece cuando se implementa el esquema hbrido de descomposicin de dominios
utilizando como solver el gradiente conjugado paralelizado con memoria compartida. Esto se debe a que
el OpenMPI slo se crea un proceso en cada computadora no se requiere comunicacin con memoria
compartida y polling.
Tiempo [h]
0.12
0.93
1.60
2.38
4.93
5.59
5.13
Memoria [GB]
17
47
110
142
215
271
285
Particiones
52
52
60
60
84
100
100
Traslape
12
10
17
15
17
20
20
PCs
13
13
15
15
29
29
29
Los primeros cuatro resultados se obtuvieron utilizando el Cluster 2. Para los siguientes tres casos se
utilizaron en conjunto el Cluster 1 y el Cluster 2. La grfica 6.8 permite comparar visualmente el
tamao del sistema de ecuaciones contra el tiempo de solucin.
85
6. Resultados
6
5.6
5.1
4.9
Tiempo [horas]
2.4
2
1.6
0.9
0.1
0
3,970,662
14,400,246
32,399,048
41,256,528
63,487,290
78,370,466
82,033,206
Nmero de ecuaciones
Grfica 6.8. Comparativo de nmero de ecuaciones contra tiempo de solucin del problema.
100000,000
50010,001
116
20
0.0001
Ecuaciones:
100020,002
Memoria (maestro):
Memoria (cada esclavo):
Memoria (total):
25.8 GB
8.3 GB
260.0 GB
1004,816
86
6. Resultados
Tiempo [s]
151.7
1220.3
1.5
132.8
1985.0
5483.5
992.9
9964.9
Ensamblar sistemas 0%
Inicializar esclavos 1%
Factorizacin 20%
Visto de otro modo, podemos decir que en total se resolvieron 425,952 sistemas de 1004,816 ecuaciones
cada uno (en promedio), en un tiempo de 2 horas 46 min.
87
El gradiente conjugado en paralelo con OpenMP presenta muy buenos resultados con hasta 8
procesadores, con ms de 8 se degrada demasiado la eficiencia, esto es debido a que no es factible que
todos los procesadores utilicen el bus de datos al mismo tiempo, lo que crea cuellos de botella, lo que da
lugar tiempos de espera muy grandes.
El esquema de Schwarz funciona muy bien debido a que el trfico de informacin entre los nodos es muy
reducido. Se encontr adems que se puede mejorar el tiempo de convergencia significativamente
aumentando la cantidad de capas de traslape entre las particiones.
Es complicado evaluar la eficiencia de la descomposicin de dominios para elementos finitos en
problemas con mallas muy irregulares. Hemos encontrado que cuando las particiones queda con fronteras
pequeas se mejora la velocidad de convergencia. Pero, si una particin tiene ms condiciones de frontera
de Dirichlet, entonces converge ms rpido, esto crea un desbalance de cargas, lo que alenta el tiempo de
convergencia a una solucin global. Para evitar este problema habra que implementar un mallador que
sea ms inteligente, para que ste pueda decidir donde sera mejor colocar las fronteras y mejorar el
balance de cargas.
Encontramos que el utilizar el esquema de descomposicin de dominios con un solver directo
(factorizacin Cholesky simblica) aunque costoso al momento de factorizar es muy eficiente al momento
de resolver los sistemas en cada iteracin. La gran desventaja de este mtodo es que se utiliza mucha
memoria. La cantidad de memoria est relacionada a la cantidad de conectividades que tenga la malla
generada al discretizar con elemento finito.
sta es una alternativa para resolver problemas de gran escala cuando se dispone de la memoria suficiente
para poder factorizar las matrices.
El programa desarrollado slo permite hacer mallados con tringulos o tetraedros, estos son los tipos de
elementos que aunque permiten mallar geometras complejas, generan mallas con el mayor nmero de
interconexiones. Creemos que, para geometras sencillas, se lograra una mejor eficiencia en el programa
si se utilizaran cuadrilteros o hexaedros con el fin de obtener matrices ms ralas y por lo tanto ms
rpidas de resolver y con un menor consumo de memoria.
La parte ms necesaria a mejorar es el particionador, actualmente se utilizan las rutinas de METIS, pero
este tiene la desventaja de crear las particiones tratando de igualar la cantidad de elementos en cada una.
Lo que se necesita es crear un particionador que divida las particiones considerando el nmero de
conectividades de cada una. Al tener todas las particiones un nmero semejante de conectividades se
generarn sistemas de ecuaciones ralos con un nmero semejante de elementos distintos de cero, lo que
en este tipo de problemas en paralelo se traducir en un mejor balance de carga.
Se est trabajando para extender el uso de estas rutinas a otros problemas de elemento finito, por ejemplo,
para resolver las ecuaciones de Navier-Stokes con fluidos multi-fsicos en medios porosos.
89
Bibliografa
[Bote03]
[Chap08] B. Chapman, G. Jost, R. van der Pas. Using OpenMP: Portable Shared Memory Parallel
Programming. The MIT Press, 2008.
[DAze93] E. F. D'Azevedo, V. L. Eijkhout, C. H. Romine. Conjugate Gradient Algorithms with Reduced
Synchronization Overhead on Distributed Memory Multiprocessors. Lapack Working Note
56. 1993.
[Dohr03] Dohrmann C. R. A Preconditioner for Substructuring Based on Constrained Energy
Minimization. SIAM Journal of Scientific Computing. Volume 25-1, pp. 246-258, 2003.
[Drep07] U. Drepper. What Every Programmer Should Know About Memory. Red Hat, Inc. 2007.
[Esch97]
[Gall90]
[Geor81] A. George, J. W. H. Liu. Computer solution of large sparse positive definite systems.
Prentice-Hall, 1981.
[Geor89] A. George, J. W. H. Liu. The evolution of the minimum degree ordering algorithm. SIAM
Review Vol 31-1, pp 1-19, 1989.
[Golu96] G. H. Golub, C. F. Van Loan. Matrix Computations. Third edidion. The Johns Hopkins
University Press, 1996.
[Heat91]
M T. Heath, E. Ng, B. W. Peyton. Parallel Algorithms for Sparse Linear Systems. SIAM
Review, Vol. 33, No. 3, pp. 420-460, 1991.
[Kary99] G. Karypis, V. Kumar. A Fast and Highly Quality Multilevel Scheme for Partitioning Irregular
Graphs. SIAM Journal on Scientific Computing, Vol. 20-1, pp. 359-392, 1999.
[Kimn06a] J. H. Kimn, M. Sarkis. OBDD: Overlapping balancing domain decomposition methods and
generalizations to the Helmholtz equation. Proceedings of the 16th International Conference
on Domain Decomposition Methods, 2005.
91
Bibliografa
[Lipt79]
R. J. Lipton, R. E. Tarjan. A Separator Theorem for Planar Graphs. SIAM Journal on Appliend
Mathematics, Vol. 36-2, 1979.
[Li05]
J. Li, O. Widlund. FETI-DP, BDDC, and block Cholesky methods. International Journal for
Numerical Methods in Engineering. Vol. 66-2, pp. 250-271, 2006.
[Ster95]
[Tose05]
[Widl08] O. B. Widlund. The Development of Coarse Spaces for Domain Decomposition Algorithms.
Proceedings of the 18th International Conference on Domain Decomposition, 2008.
[Wulf 95] W. A. Wulf , S. A. Mckee. Hitting the Memory Wall: Implications of the Obvious. Computer
Architecture News, 23(1):20-24, March 1995.
[Yann81] M. Yannakakis. Computing the minimum fill-in is NP-complete. SIAM Journal on Algebraic
Discrete Methods, Volume 2, Issue 1, pp 77-79, March, 1981.
[Zien05]
92
O.C. Zienkiewicz, R.L. Taylor, J.Z. Zhu, The Finite Element Method: Its Basis and
Fundamentals. Sixth edition, 2005.
Para probar el proyecto es necesario utilizar el programa de pre y postproceso GiD, desarrollado por
CIMNE (International Center for Numerical Methods in Engineering), para generar el mallado y al final
para visualizar los resultados.
Los resultados se pueden ver de forma combinada, es decir, los resultados de todas las particiones
mezclados o con los resultados de las particiones de forma independiente.
Las instrucciones funcionan haciendo pruebas tanto en Windows como en Linux.
Forma combinada
1. Abrir el GiD.
2. Desde el men [Files/Open] seleccionar alguno de los directorios contenidos en "Mecanic4/examples",
por ejemplo el directorio "Mecanic4/examples/arc-3D.gid"
3. Generar una malla con el men [Mesh/Generate mesh]. Se puede cambiar la densidad del mallado
ajustando el parmetro del tamao del elemento.
93
4. Ejecutar el men [Calculate/Calculate], esto generar un archivo "Mecanic4/examples/arc-3D.gid/arc3D.dat" que contendr los datos de entrada del programa. El sistema generar un mensaje de error, esto es
porque para usar MPI es necesario ejecutar el programa manualmente.
94
95
Particiones independientes
Para ver los resultados de cada particin de forma independiente:
1. En caso de que ya est abierto GiD, cambiar a modo de preproceso, abriendo el men
[Files/Preprocess].
96
3. Abrir el men [Data/Problem data], aqu se pueden modificar los parmetros de ejecucin del programa
Mecanic3D.
3.1. Seleccionar [Domain decomposition]
3.2. Activar la opcin [Multiple files] y presionar [Accept]
4. Generar una malla con el men [Mesh/Generate mesh]. Se puede cambiar la densidad del mallado
ajustando el parmetro del tamao del elemento.
97
5. Ejecutar el men [Calculate/Calculate], esto generar un archivo "Mecanic4/examples/arc-3D.gid/arc3D.dat" que contendr los datos de entrada del programa. El sistema generar un mensaje de error, esto es
porque para usar MPI es necesario ejecutar el programa manualmente.
98
99
8. Para ver las otras particiones, regresar al punto 7.1 y elegir otro archivo "Mecanic4/examples/arc3D.gid/arc-3D.*.res"
9. Es posible mezclar las particiones, para esto abrir [Files/Merge] y seleccionar otro de los archivos
"Mecanic4/examples/arc-3D.gid/arc-3D.*.res"
100
11. Se puede elegir cambiar el modo de visualizacin abriendo el men [Window/View style].
101
A continuacin describimos un ejemplo de los comandos necesarios para, una vez teniendo un archivo de
datos, ejecutar el programa en un cluster.
Ejemplo del comando para ejecutar el programa en el cluster es
mpirun -n 57 -hostfile hostfile.txt -rf rankfile.txt --mca mpi_yield_when_idle 1 Mecanic3D arc-3D.dat arc3D
103
104
No es factible crear mallas de decenas de millones de elementos usando el GiD en modo interactivo, para
estos casos se tiene que ejecutar en una consola de comandos en modo batch. El siguiente script llama a
GiD en este modo y ejecuta el archivo batch (bch) que se muestra ms abajo.
#!/bin/sh
GIDDEFAULT=/Applications/GiD-9.2.2b.app/Contents/MacOS
GIDDEFAULTTCL=$GIDDEFAULT/scripts
TCL_LIBRARY=$GIDDEFAULT/scripts
TK_LIBRARY=$GIDDEFAULT/scripts
DYLIB_LIBRARY_PATH=$GIDDEFAULT/lib
DYLD_LIBRARY_PATH=$GIDDEFAULT/lib
export GIDDEFAULT
export GIDDEFAULTTCL
export TCL_LIBRARY
export TK_LIBRARY
export DYLIB_LIBRARY_PATH
export DYLD_LIBRARY_PATH
/Applications/GiD-9.2.2b.app/Contents/MacOS/gid.exe -n -b mesh.arc-3D.sstruct.bch
"../../examples/arc-3D.gid"
Script para llamer a GiD
*****OUTPUTFILENAME "arc-3D.log"
Meshing Reset y escape escape escape
Meshing SemiStructured Volumes 400 InvertSelection escape escape escape
Meshing ElemType Tetrahedra InvertSelection escape escape escape
Meshing Generate 0.220 escape escape escape
Files WriteCalcFile "arc-3D.dat" escape escape escape
Archivo bch con los comandos de GiD para la generacin de mallas
El archivo batch anterior tiene dos parmetros, uno es la cantidad de divisiones y otro el tamao del elemento.
Variando estos dos valores se obtienen los siguientes resultados:
Divisiones
400
400
400
400
Size
0.200
0.175
0.150
0.125
Elements
13077600
16644000
22416000
31996800
Nodes
2334622
2951360
3944637
5584727
105