




























































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Práctica práctica práctica práctica
Tipo: Apuntes
1 / 105
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





























































































“Cálculo de Estructuras Utilizando
Elemento Finito con Cómputo en Paralelo”
por
Guanajuato, abril de 2010
Agradecimientos
En primera instancia y de forma general quiero agradecer al CIMAT, es un gran lugar para crecer, tanto en
forma académica, como en forma personal. Es una comunidad fantástica de la cual recibí incontable
apoyo. En partícular ahora quiero decir gracias al Dr. Salvador Botello por compartir su conocimiento y
experiencia, por todo el apoyo que me brindó. Además de asesorar y guiar con por buen camino esta tésis,
consiguió los recursos (becas, cursos y hardware) necesarios para llevarla a cabo. A los revisores Dr.
Arturo Hernández Aguirre y Dr. Miguel Ángel Móreles Vázquez, por sus valiosos comentarios y
opiniones. Agradezco también a Jose Jesus Rocha Quezada quien fue el encargado poner a punto el
cluster de cómputo en el cual se implementó esta tesis.
Al Dr. Juan José Tapia Armenta por su interés en este trabajo de tésis y por tomarse el tiempo de leer y
enviarme comentarios, los cuales fueron de gran ayuda.
Durante el tiempo en que realicé mis estudios de maestía recibí apoyos en forma de becas, sin los cuales
no hubiese sido posible la conclusión de estos y el desarrollo de esta tésis.
Centro de Investigación en Matemáticas (CIMAT)
Consejo Nacional de Ciencia y Tecnología (Conacyt)
A los implicados
- Resumen................................................................................................................................................. Algunos problemas modelados con elemento finito requieren de una discretización muy fina para reducir
el grado de error, lo cual implica utilzar una gran cantidad de recursos de cómputo para poder ser
resueltos. En particular nos enfocamos en problemas de elemento finito resultantes de la modelación de la
deformación elástica de sólidos en dos y tres dimensiones. Sucede entonces que el tamaño de las matrices
resultantes de esta modelación fina son tan grandes que no es factible almacenarlas en la memoria de una
sola computadora, además, el tiempo que se tarda en encontrar la solución del sistema de ecuaciones
puede ser demasiado extenso como para resultar práctico. Lo que nos lleva a cambiar de paradigma de
programación y enfocarnos en el cómputo en paralelo, con el cual hacemos que múltiples computadoras
trabajen de forma cooperativa en la resolución de este tipo de problemas.
Iniciaremos más adelante en este capítulo hablando de forma breve del cómputo en paralelo, tanto de
hardware y software, la motivación matemática de éste y haremos una intruducción a la técnica de
descomposición de dominios hablando brevemente del estado del arte de éste.
El orden de los capítulos siguientes tiene que ver con la forma en que se fue atacando el problema. Con el
capítulo 2 describiremos la teoría de deformación elástica de sólidos con elementos finitos.
En el capítulo 3 describiremos la paralelización de dicho programa utilizando el esquema de memoria
compartida utilizando como solver el método de gradiente conjugado en paralelo, presentamos algunos
resultados.
A continuación, en el capítulo 4, hablaremos de la teoría e implementación un esquema híbrido, que
combina los esquemas de memoria distribuida y memoria compartida. En pocas palabras, lo que hacemos
es particionar el dominio de un problema de elementos finitos para así formar problemas independientes
que están relacionados entre sí a través de condiciones de frontera comunes. Cada problema
independiente se resuelve utilizando el solver descrito en el capítulo 3. Las soluciones locales a cada
partición se combinan con las de las particiones adyacentes de forma iterativa hasta lograr una
convergencia. Mostramos algunos resultados y denotamos algunos de los problemas de este esquema
híbrido.
utilizada en computación científica de alto rendimiento, la mayoría de las computadoras en la lista
TOP500, utilizan este esquema.
En años recientes se ha logrado un avance exponencial en cuanto a la capacidad de procesamiento, de los
procesadores, como se muestra en la figura 1. 1.
1970 1975 1980 1985 1990 1995 2000 2005 2010
0E+
1E+
2E+
3E+
4E+
5E+
6E+
7E+
8E+
Intel 4004 (92K ips) Intel 8080 (500K ips) Motorola 68000 (1M ips) Intel 80x286 (4M ips) Intel 80x386 (11M ips) Motorola 68040 (44M ips) Intel 80x486 (54M ips)
Motorola 68060 (88M ips) Intel Pentium Pro (541M ips)
Intel Pentium III (1.4G ips)
AMD Athlon XP (5.9G ips)
Intel Pentium IV (9.7G ips)
PlayStation 3 Cell (10G ips)
Intel Core 2 (49G ips)
Intel Core i7 (76G ips)
AMD Phenom II X4 (43G ips)
Número de instrucciones por segundo
Figura 1. 1. Evolución de la capacidad de los procesadores en instrucciones por segundo (ips).
Este incremento no solo se debe al desarrollo de la tecnología con la que se fabrican los procesadores,
sino al hecho de que ahora se fabrican procesadores con varios núcleos. Por ejemplo el procesador Intel
Core i7-980X tiene 6 núcleos. Los sistemas operativos y compiladores modernos aprovechan esta
característica para ejecutar sus rutinas en paralelo. El estándar más utilizado para procesadores multi-core
es OpenMP [Chap08].
Otro avance importante en los últimos años 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 librerías que permiten
la comunicación entre los programas de cálculo numérico. La librería más utilizada para desarrollar
aplicaciones en paralelo en clusters Beowulf es la interface de pase de mensajes MPI (del inglés,
Message Passing Interface) [MPIF08], ésta permite implementar con facilidad programas que se ejecuten
bajo el esquema de memoria distribuida.
Computadoras nodos escalvo
Computadora
nodo maestro
Switch
de red
Red
externa
Figura 1. 2. Configuración típica de un cluster Beowulf.
El trabajo de esta tesis implicó el desarrollo de un programa de software para resolver problemas de
elemento finito utilizando cómputo en paralelo. Para la implementación y prueba de este programa se
utilizó el cluster de cómputo 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 través de un nodo
maestro. Éstas tienen instalado el sistema operativo GNU/Linux, la suite de compiladores GNU/GCC y la
librería de MPI OpenMPI..
Hay muchas operaciones matemáticas básicas que pueden paralelizarse, esto significa que pueden
separarse en varias sub-operaciones que puede realizarse de forma independiente. Por ejemplo, el la suma
de dos vectores x , y para producir otro vector c ,
c
i
= x
i
y
i
, i =1, , N.
En este caso las
sumas pueden realizarse simultáneamente, asignando una a cada procesador. Lo que
hay que resaltar es que no hay dependencia entre los diferentes pares de datos, tenemos entonces el
paralelismo más eficiente.
a =
∑
i = 1
N
x
i
y
i
donde a es un escalar, una primera aproximación sería verlo como una secuencia de sumas de productos
que requieren ir acumulando un resultado, al verlo así no es una operación paralelizable. Sin embargo,
podemos reorganizar el proceso como se muestra en la figura 1. 3.
comparten aristas y nodos, figura 1. 4. Las relaciones entre nodos corresponden a entradas en una matriz.
Así, la relación entre los nodos
i y
j equivale a un valor en la entrada
a
i j
en una matriz
. Dado que
existe una relación del nodo i al nodo j , también existe una relación (no necesariamente con el mismo
valor) del nodo
j al nodo
i , lo que producirá una matriz con estructura simétrica, aunque no
necesariamente simétrica en cuanto a sus valores (en las secciones siguientes se tratan sólo problemas con
matrices simétricas tanto en estructura como en valores). Además, en la diagonal aparecen entradas que
representan a los nodos.
i
j
° a
i i
° a
j i
° a
i j
° a
j j
Figura 1. 4. Discretización de un dominio .
Tendremos entonces la representación del problema de ecuaciones diferenciales parciales como un
sistema de ecuaciones
A x = b ,
x = c en ∂
con ciertas condiciones (Dirichlet o Neumann) en la frontera
. En el capítulo 2 formularemos
problema de deformación lineal de sólidos utilizando este método.
1.6.2. Descomposición de dominios
La descomposición 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 descomposición de dominios, utilizando particiones
sin traslape o con traslape, figura 1. 5.
2
1
2
1
Figura 1. 5. Descomposición en dominios sin traslape (izquierda) y con traslape (derecha).
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 partición de foma
independiente, utilizando algún método convencional para resolver sistemas de ecuaciones. La soluciones
obtenidas se intercambiarán con las particiones adyacentes y así, de forma iterativa, se irá aproximando la
solución global del sistema.
1.6.3. Dominios sin traslape, complemento de Schur
En dominios sin traslape,
1
2
1
2
1
2
dos particiones adyacentes tendrán nodos en común en la frontera , lo que equivaldrá a entradas iguales
en sus respectivas matrices. Podemos entonces formar la matriz A como
I I
1
I
1
I I
2
I
2
I
1
I
2
x =
x
I
1
x
I
2
x
b =
b
I
1
b
I
2
b
Para cada patición
p tendremos entonces
p
I I
p
I
p
I
p
p
x
p
x
I
p
x
p
b
p
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 incógnitas x
I
p
en el interior de la partición, esto corresponde a la
factorización de la matriz de ( 1. 1 ) como
I
1
I I
1 − 1
I
2
I I
2 − 1
I I
1
I
1
I I
2
I
2
y un sistema lineal resultante
I I
1
I
1
I I
2
I
2
x =
b
I
1
b
I
2
g
aquí
I
1
I I
1
− 1
I
1
I
2
I I
2
− 1
I
2
es el complemento de Schur relativo a las incógnitas en . Acomodando como en ( 1. 2 ), podemos escribir
el complemento de Schur local
p
p
I
p
I I
p
− 1
I
p
, con p = 1 P ,
encontraremos el complemento de Schur para
x
con
S x
= g
con
Problema Dirichlet D
p
{
− x
p
n 1 / 2
= b en
p
x
p
n 1 / 2
= 0 sobre ∂
p
x
p
n 1 / 2
= x
n
en
}
, p =1, 2 ,
Problema Neumann N
p
{
p
n 1
= 0 en
p
p
n 1
= 0 sobre ∂
p
p
∂ n
i
n 1
∂ x
1
∂ n
1
n 1 / 2
∂ x
2
∂ n
2
n 1 / 2
en }
, p =1, 2.
Para la siguiente iteración usaremos
x
n 1
= x
n
1
n 1
2
n 1
en ,
con un
max
elegido de forma adecuada.
Para mostrar en este procedimiento forma matricial intoduciremos los vectores internos de grados e
libertad
v
p
= x
I
p
y
w
p
I
p
, así
Problema Dirichlet D
p
I I
p
v
p
n 1 / 2
I
p
x
n
= b
I
p
, p =1, 2 , ( 1. 6 )
Problema Neumann N
p
I I
p
I
p
I
p
p
w
p
n 1 / 2
p
n 1 / 2
r
, p =1, 2 , ( 1. 7 )
x
n 1
= x
n
1
n 1
2
n 1
donde el residual
r
se define como
r
I
1
v
1
n 1 / 2
1
x
n
− b
1
I
2
v
2
n 1 / 2
2
x
n
− b
2
A continuación eliminamos v p
n 1 / 2
, w
p
n 1 / 2
de ( 1. 6 ) y ( 1. 7 ). A partir del problema Dirichlet
p
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 factorización por bloques de las matrices locales A
p
, los problemas de Neuman
p
dan
p
n 1
p
r
− 1
p
r
− 1
g
− S x
n
Finalmente encontramos
x
n 1
− x
n
1
1
− 1
S
2
− 1
g
− S x
n
El precondicionador para el sistema ( 1. 5 ) sería
[ S
1
− 1
S
2
− 1
] S =
[ S
1
− 1
S
2
− 1
] S
1
2
Tomando como base el algoritmo Neumann-Neumann, se ha desarrollado el método BDD (en inglés,
B alancing Domain Decomposition ), la formulación de éste se puede encontrar en [Mand93]. Los métodos
BDD son algoritmos iterativos que trabajan con subestructuras, es decir, métodos donde los grados de
libertad interiores de cada una de las particiones sin traslape son eliminados. En cada iteración se
resuelven los problemas locales de cada partición y se combinan las soluciones con un problema en una
malla más gruesa creata a partir del subdominio del espacio nulo. En las fornteras comunes se establecen
condiciones Neumann.
Una de las estratégias más recientes para resolver problemas de descomposición de dominios para
problemas de elemento finito de deformación elástica de sólidos que producen matrices simétricas
positivas definidas es el método de balance de descomposición de dominios por restricciones, BDDC (en
inglés, B alancing Domain Decomposition by Constraints ) [Mand02] y [Dohr03]. El problema se resuelve
utilizando formulando un espacio grueso ( coarse space ) el cual consiste de fuciones de minimización de
energía con los grados de libertad dados en la malla gruesa, una descripción condensada puede
encontrarse en [Widl08].
Recientemente se han desarrollado algoritmos basados en BDD formulados con subdominios con
traslape, la descripción de estos puede consultarse en [Kimn06a] y [Kimn06b].
1.6.5. Métodos Dirichlet-Dirichlet
El caso dual al algoritmo Neumann-Neuman es el algoritmo con condiciones Dirichlet a ambos lados de
la interfaz común de los subdominios [Tose05 pp12-14]. Si comenzamos con una aproximación inicial
0
en , como en ( 1. 4 ), podemos resolver inicialmente problemas con condiciones Neumann, en cada
p
Después 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 iteración. Para dos partciones, podemos describir el método utilizando operadores
diferenciales, así, para n ≥ 0 ,
Problema Neumann N
p
{
− x
p
n 1 / 2
= b en
p
x
p
n 1 / 2
= 0 sobre ∂
p
∂ x
p
∂ n
p
n 1 / 2
p
n
en }
, p =1, 2 ,
Problema Dirichlet D
p
{
p
n 1
= 0 en
p
p
n 1
= 0 sobre ∂
p
p
n 1
= x
1
n 1 / 2
− x
2
n 1 / 2
en
}
, p =1, 2.
Para la siguiente iteración usaremos
n 1
n
1
∂ n
1
n 1
2
∂ n
2
n 1
en ,
con un
max
elegido de forma adecuada.
Para mostrar en este procedimiento forma matricial intoduciremos los vectores internos de grados e
libertad
v
p
= x
I
p
y
w
p
I
p
, así
Problema Neumann N
p
I I
p
I
p
I
p
p
v
p
n 1 / 2
p
n 1 / 2
b
I
p
b
p
p
n
, p =1, 2 , ( 1. 8 )
Problema Dirichlet D
p
I I
p
w
p
n 1
I
p
r
, p =1, 2 , ( 1. 9 )
n 1
n
1
n 1
2
n 1
donde el residual
r
se define como