Este documento describe el problema de determinar la distribución de temperaturas en una placa rectangular de ordenador utilizando el método de diferencias finitas. Primero se define la ecuación diferencial de Laplace y las condiciones de contorno. Luego, se discretiza el dominio en una malla y se aplica el método de Jacobi para resolver numéricamente la ecuación. Finalmente, se propone el método de Red-Black para acelerar la convergencia de manera paralela. El documento incluye el seudocódigo para implementar el método de Jacobi paral
2. 1 DEFINICIÓN DEL PROBLEMA Javier García Molleja
1. Denición del problema
En el problema vamos a considerar la distribución de temperaturas de una placa de un
ordenador en el que se encuentra situado el procesador[1]. Para trabajar adecuadamente
necesitamos conocer las dimensiones de la placa y del procesador, además de la posición
de este último. La placa es rectangular de dimensiones 2 cm de largo y 1 cm de ancho y el
procesador es cuadrado de 0,25 cm de lado. Éste se localiza a 0,25 cm hacia la izquierda
y arriba de la esquina inferior derecha.
Sabemos que los lados de la placa están a 25o C, excepto el lado superior que está a
10o C por estar al lado del ventilador del ordenador. También tenemos que el procesador
siempre está a 50o C, así que con todo esto vamos a plantear la ecuación diferencial y
las respectivas condiciones de contorno. Como estamos considerando un problema físico
bastante estudiado el correcto planteamiento matemático estará bien condicionado por lo
que un tratamiento numérico es posible.
1.1. Obtención de la ecuación diferencial
Nuestra práctica tiene como objetivo determinar la distribución de temperaturas en
una placa rectangular de ordenador, por lo que debemos estudiar la ecuación de Poisson
en dos dimensiones
∂ 2u ∂ 2u
∇2 u = ∆u = + = f (x, y)
∂x2 ∂y 2
La función f (x, y) representa las posibles fuentes o sumideros existentes en el dominio,
pero como carecemos de éstos (al considerar que el procesador no forma parte del contorno)
su valor es
f (x, y) = 0,
por consiguiente la ecuación diferencial es la de Laplace :
∂ 2u ∂ 2u
∇2 u = ∆u = + = 0.
∂x2 ∂y 2
La solución de esta ecuación, u, se denominará armónica.
1.2. Imposición de condiciones de contorno
Una vez determinada la ecuación diferencial debemos indiciar los valores que existen
en el contorno del dominio. Esto se traduce en un problema de Dirichlet.
Las condiciones de contorno son entonces:
1. El extremo superior del dominio está a 10o C
2 5.o Física
3. Javier García Molleja 2 MÉTODO DE RESOLUCIÓN
2. El resto de extremos del dominio están a 25o C
3. El procesador está a 50o C
Tras denir esto podemos ya considerar el problema en su conjunto, el cual estará
bien planteado (con solución que existe, es única y varía contínuamente con los datos del
problema) y además poseerá solución analítica (aunque en forma de serie innita):
∂ 2u ∂ 2u
+ = 0 en Ω
∂x2 ∂y 2
10, para los puntos (x, 1)
u(x, y) = g(x, y) = 25, para los puntos (x, 0), (0, y), (1, y) sobre ∂Ω
50, para los puntos 0,25 ≤ x ≤ 0,50 , 1,50 ≤ y ≤ 1,75
2. Método de resolución
Tras plantear la ecuación diferencial con las respectivas condiciones de contorno de-
beríamos resolver el problema numéricamente. Para ello es necesario realizar un mallado
de la placa, que por ser la placa rectangular escogeremos el tamaño de paso igual en ambas
dimensiones, por lo que el número de puntos en cada dimensión deberán ser dependientes.
hx =hy
2 1
=
Nx + 1 Ny + 1
2Ny + 2 =Nx + 1
Nx =2Ny + 1
Así, un punto cualquiera de la placa se determinará con la dupla (xi , yj ), tal que
xi =ih
yj =jh
donde
i =0, 1, 2, . . . , Nx + 1
j =0, 1, 2, . . . , Ny + 1
Lx Ly
hx = =hy = .
Nx + 1 Ny + 1
Indicamos que Lx es la longitud de la placa en la dirección del eje x (horizontal), que Ly es
la longitud de la placa en la dirección del eje y (vertical) y que Nx es el número de puntos
del mallado en la dimensión horizontal y Ny es lo mismo para la dimensión vertical.
Los puntos que contengan 0 ó N + 1 se denominarán nodos frontera y el resto se
llamarán nodos interiores.
3 5.o Física
4. 2 MÉTODO DE RESOLUCIÓN Javier García Molleja
2.1. Aplicación de diferencias nitas
Para llegar a esto es necesario aproximar la derivada segunda de f (x) mediante la
aplicación de un desarrollo en serie de Taylor en los puntos x ± h :
f (x + h) − 2f (x) + f (x − h)
f ′′ (x) ≈ .
h2
De esta manera las derivadas parciales de la ecuación de Laplace toman el siguiente
aspecto al aplicarles diferencias nitas:
∂ 2u u(x + h, y) + u(x − h, y) − 2u(x, y)
2
(x, y) ≈
∂x h2
2
∂ u u(x, y + h) + u(x, y − h) − 2u(x, y)
2
(x, y) ≈
∂y h2
Llegado a este punto sustituímos estos resultados en la ecuación diferencial para pos-
teriormente despejar el punto u(x, y) :
u(x + h, y) + u(x − h, y) + u(x, y + h) + u(x, y − h) − 4u(x, y)
0≈
h2
1
u(x, y) ≈ [u(x + h, y) + u(x − h, y) + u(x, y + h) + u(x, y − h)]
4
Ahora bien, al calcular numéricamente estos valores obtendremos un error, el cual se irá
propagando en cada cálculo. De este modo no estamos calculando realmente u(xi , yj ) sino
su aproximación Ui,j , entonces la última ecuación será:
1
Ui,j = [Ui+1,j + Ui−1,j + Ui,j+1 + Ui,j−1 ] ,
4
que es conocida como la fórmula de los cinco puntos.
A continuación debemos numerar los nodos (sin contar las esquinas pues no apare-
cerán en las operaciones) siguiendo el orden lexicográco, es decir, comenzamos por (1, 0),
siguiendo por (2, 0), (3, 0), . . . , (Nx + 1, 0), (0, 1), (1, 1), (2, 1) . . . El sistema de ecuaciones
resultante dará origen a una matriz simétrica, denida-positiva, de diagonal dominante y
banda.
Tras haber discretizado el dominio es necesario considerar que los vértices del proce-
sador deben coincidir con los nodos del mallado, ya que si esto no es así las dimensiones
de éste quedarán sobrestimadas o subestimadas (dependiendo del caso) y los resultados
que obtengamos serán poco realistas. Para una correcta elección del número de puntos de
cada dimensión debemos analizar los vértices del procesador en notación fraccionaria y
conseguir que todos posean el mismo denominador. Podemos ver fácilmente que es 4, por
lo que debe cumplirse que el número de puntos de cada dimensión sean múltiplos de este
valor.
4 5.o Física
5. Javier García Molleja 2 MÉTODO DE RESOLUCIÓN
2.2. Método de Jacobi
Si consideramos que Ui,j es la temperatura del punto interior del mallado (xi , yj ) en la
k
k-ésima iteración podemos conocer el valor en la siguiente iteración mediante la aplicación
de la fórmula de los cinco puntos
k+1 1[ k k k k
]
Ui,j = Ui+1,j + Ui−1,j + Ui,j+1 + Ui,j−1 ,
4
que es el llamado método de Jacobi en el que no hace falta construir la matriz del sistema.
En este método el valor en cada punto es la media de los valores adyacentes, así que son
necesarias tantas iteraciones como puntos hemos escogido para el mallado para obtener
una aproximación aceptable. Además, para hacer decrecer el error por un factor de 2,
hace falta realizar ( )2
N +1
k≈
π
iteraciones, con el inconveniente de cuanto más grande sea N, (considerando para éste
todos los puntos del dominio) más lenta sea la convergencia.
Si analizamos detenidamente el método podemos ver que se puede paralelizar, asig-
nando convenientemente los nodos a los procesadores disponibles para sus actualización.
Sin embargo, se requiere la comunicación entre procesadores de los valores frontera.
2.3. Método de RedBlack
Si partimos del método de GaussSeidel secuencial
k+1 1[ k k+1 k k+1
]
Ui,j = Ui+1,j + Ui−1,j + Ui,j+1 + Ui,j−1
4
podemos ver indicios de paralelización si nos damos cuenta que los nodos cuyos índices
suman par dependen sólo de nodos cuyos índices suman impar y viceversa, por lo que
llegamos al método RedBlack en el que actualizamos simultáneamente todos los nodos
negros (suma par) y después todos los rojos (suma impar)
NODOS NEGROS: i + j = par
k+1 1[ k k k k
]
Ui,j = Ui+1,j + Ui−1,j + Ui,j+1 + Ui,j−1
4
NODOS ROJOS: i + j = impar
k+1 1 [ k+1 k+1 k+1 k+1
]
Ui,j = Ui+1,j + Ui−1,j + Ui,j+1 + Ui,j−1
4
Aunque este método es dos veces más rápido que el de Jacobi, no acelera la conver-
gencia, por lo que debemos introducir un factor de amplicación que mejore la corrección
5 5.o Física
6. 3 SEUDOCÓDIGO Javier García Molleja
de nuestro método para acercarnos al punto que calculamos. Esto da lugar al método
SOR que también se puede paralelizar. Para nuestro caso lo implementamos en el de
RedBlack:
NODOS NEGROS: i + j = par
w[ k ]
k+1 k
Ui,j =Ui,j + Ui+1,j + Ui−1,j + Ui,j+1 + Ui,j−1 − 4Ui,j
k k k k
4
NODOS ROJOS: i + j = impar
w [ k+1 ]
k+1 k
Ui,j =Ui,j + Ui+1,j + Ui−1,j + Ui,j+1 + Ui,j−1 − 4Ui,j
k+1 k+1 k+1 k
4
Para que este método sea óptimo debemos buscar el valor w que minimice el factor de
decrecimiento de error y analíticamente se muestra que es
2
wopt = ( ) ∈ (1, 2).
1 + sen Nπ+1
Así pues, para hacer decrecer el error por un factor de 2, hace falta realizar k iteraciones
de tal manera que ( )
N +1
k≈
2π
que es, aproximadamente, la raíz cuadrada del número de pasos que Jacobi requería.
3. Seudocódigo
A continuación vamos a describir el seudocódigo del método de Jacobi. Resaltemos
que no indicaremos las partes referentes al reloj y a la grabación de datos, quedándonos
así con el método in situ.
PROGRAMA Jacobi_Paralelo
SIN CRITERIO IMPLÍCITO
REAL*8,ASIGNABLE::U(:,:), Uant(:,:),Error(:,:)
LÓGICO,ASIGNABLE::M(:,:)
REAL*8::tolerancia, h
ENTERO::Nx, k, control, procXini, procXfin, procYini, procYfin
ENTERO::Nx1, Ny1, Nxmenuno, Nymenuno
REAL*8,PARÁMETRO::uncu=1.0/4.0
ENTERO,PARÁMETRO::Ny=51
!HPF$ DISTRIBUIR(BLOQUE,BLOQUE)::U
!HPF$ ALINEAR CON U::Uant
!HPF$ ALINEAR CON U::Error
6 5.o Física
7. Javier García Molleja 3 SEUDOCÓDIGO
!HPF$ ALINEAR CON U::M
Nx = 2*Ny + 1
Nx1 = Nx + 1
Ny1 = Ny + 1
Nxmenuno = Nx - 1
Nymenuno = Ny - 1
h = 1.0/(Ny + 1)
ASIGNAR(U(0:Nx+1,0:Ny+1))
ASIGNAR(Uant(0:Nx+1,0:Ny+1))
ASIGNAR(M(0:Nx+1,0:Ny+1))
ASIGNAR(Error(0:Nx+1,0:Ny+1))
IMPRIMIR*,Introduzca la tolerancia deseada
LEER*,tolerancia
IMPRIMIR*,Indique el maximo de iteraciones para controlar el bucle
LEER*,control
procXini = 1.5/h
procXfin = 1.75/h
procYini = 0.25/h
procYfin = 0.5/h
U(:,0) = 25.0
U(:,Ny+1) = 10.0
U(0,:) = 25.0
U(Nx+1,:) = 25.0
U(1:Nx,1:Ny) = 50.0
Uant = 0.0
Error = 0.0
M = .VERDAD.
M(procXini:procXfin, procYini:procYfin) = .FALSO.
HACER k=1,control
Uant = U
DONDE (M(1:Nx,1:Ny))
U(1:Nx,1:Ny) = uncu*(U(2:Nx1,1:Ny) + U(0:Nxmenuno,1:Ny)
+ U(1:Nx,2:Ny1) + U(1:Nx,0:Nymenuno))
FIN DONDE
Error = ABS((U - Uant)/U)
7 5.o Física
8. 3 SEUDOCÓDIGO Javier García Molleja
SI(MAXVAL(Error)tolerancia)SALIR
FIN HACER
IMPRIMIR*,El bucle acabo en la iteracion,k
IMPRIMIR*,El error cometido por los calculos es,MAXVAL(Error)
FIN PROGRAMA Jacobi_Paralelo
Ahora escribiremos el seudocódigo básico para el método RedBlack con sobrerrela-
jación.
PROGRAMA Red_Black_SOR
SIN CRITERIO IMPLÍCITO
ENTERO::Nx, i, j, k, control, procXini, procXfin, procYini, procYfin
ENTERO::Nx1, Ny1, Nxmenuno, Nymenuno
ENTERO, PARÁMETRO::Ny=51
REAL,PARÁMETRO::w=1.9
REAL*8,ASIGNABLE::U(:,:), Uant(:,:), Error(:,:)
LÓGICO,ASIGNABLE::P(:,:), M(:,:)
REAL*8::tol,uncu, h
!HPF$ DISTRIBUIR(BLOQUE,BLOQUE)::U
!HPF$ ALINEAR CON U::Uant
!HPF$ ALINEAR CON U::Error
!HPF$ ALINEAR CON U::P
!HPF$ ALINEAR CON U::M
IMPRIMIR*,El parametro de relajacion optimo es,w
IMPRIMIR*,Introduzca la tolerancia
LEER*,tol
IMPRIMIR*,Indique el maximo de iteraciones
LEER*,control
uncu = 1.0/4.0
Nx = 2*Ny + 1
Nx1 = Nx + 1
Ny1 = Ny + 1
Nxmenuno = Nx - 1
Nymenuno = Ny - 1
h = 1.0/(Ny + 1)
ASIGNAR(U(0:Nx+1,0:Ny+1))
ASIGNAR(Uant(0:Nx+1,0:Ny+1))
8 5.o Física
9. Javier García Molleja 3 SEUDOCÓDIGO
ASIGNAR(P(0:Nx+1,0:Ny+1))
ASIGNAR(M(0:Nx+1,0:Ny+1))
ASIGNAR(Error(0:Nx+1,0:Ny+1))
procXini = 1.5/h
procXfin = 1.75/h
procYini = 0.25/h
procYfin = 0.5/h
U(:,0) = 25.0
U(:,Ny+1)= 10.0
U(0,:) = 25.0
U(Nx+1,:) = 25.0
U(1:Nx,1:Ny) = 50.0
Uant = 0.0
Error = 0.0
M = .VERDAD.
M(procXini:procXfin, procYini:procYfin) = .FALSO.
PARA TODOS(i=0:Nx+1,j=0:Ny+1)
P(i,j) = (MOD(i+j,2)==0)
FIN PARA TODOS
HACER k=1,control
Uant = U
DONDE(M(1:Nx,1:Ny))
DONDE (P(1:Nx,1:Ny))
U(1:Nx,1:Ny) = U(1:Nx,1:Ny) + w*uncu*(U(0:Nxmenuno,1:Ny)
+ U(2:Nx1,1:Ny) + U(1:Nx,0:Nymenuno) + U(1:Nx,2:Ny1)
- 4.0*U(1:Nx,1:Ny))
SI NO DONDE
U(1:Nx,1:Ny) = U(1:Nx,1:Ny) + w*uncu*(U(0:Nxmenuno,1:Ny)
+ U(2:Nx1,1:Ny) + U(1:Nx,0:Nymenuno) + U(1:Nx,2:Ny1)
-4.0*U(1:Nx,1:Ny))
FIN DONDE
FIN DONDE
Error = ABS((U - Uant)/U)
SI(MAXVAL(Error)tol)SALIR
FIN HACER
IMPRIMIR*,La ultima iteracion es,k
9 5.o Física
10. 5 JUEGO DE DATOS Javier García Molleja
IMPRIMIR*,Con un error relativo,MAXVAL(Error)
FIN PROGRAMA Red_Black_SOR
4. Programación
Los programas creados a partir del lenguaje FORTRAN 90 se presentarán en soporte
magnético adjuntados a la presente memoria [2].
5. Juego de datos
Antes de mostrar los datos de entrada es necesario considerar que el programa se
ejecutará en paralelo. Por este motivo debemos recurrir al uso de directivas !HPF$.
Gracias a estas directivas[3] podremos distribuir sobre los procesadores disponibles la
matriz principal, así como alinear sobre ella (es decir, distribuir el resto de matrices en
función de la primera) las otras matrices de las que disponemos para realizar nuestros
cálculos. Es conveniente realizar la distribución por bloques, ya que los métodos a pro-
gramar necesitan para actualizar los valores los datos de los nodos más próximos y con
esta elección la comunicación entre procesadores será mínima. Además, para asegurar una
buena paralelización y aprovechamiento de memoria recurriremos frecuentemente al uso
de secciones matriciales, así como el uso de construcciones FORALL y WHERE siempre
y cuando sea posible.
También debemos centrarnos en una precisión numérica aceptable, por lo que uti-
lizaremos reales con doble precisión, de esta manera evitaremos en multitud de ocasiones
la salida del bucle de control cuando aún la precisión requerida no ha sido alcanzada.
Los datos de entrada que incluiremos en ambos programas son los siguientes
TOLERANCIA: 0,0000001
CONTROL: 20000
En el caso del método de RedBlack SOR debemos buscar el valor óptimo de w, por lo
que una vez que el programa secuencial haya compilado correctamente debemos ejecutarlo
con varios valores, comparando en cuál ha necesitado menos iteraciones para alcanzar la
tolerancia referida:
10 5.o Física
11. Javier García Molleja 6 RESULTADOS
w k
1.99 1665
1.95 330
1.9 195
1.75 692
1.7 849
1.6 1181
1.4 1946
1.01 4148
Este valor sólo depende del método en sí, por lo que w también será válida para el
caso de la ejecución en paralelo, por lo que elegimos entonces w = 1,9.
Una vez obtenidos los resultados tanto secuencial como paralelamente (usando uno,
dos y cuatro procesadores) debemos obtener su tiempo de ejecución, T, y el número de
procesadores utilizados, p, para calcular la ganancia en velocidad
Ts
Sp =
Tp
y a partir de este valor determinar la eciencia
Sp
η=
p
eligiendo de este modo qué método es mejor al ejecutar el programa paralelizado con p
procesadores.
6. Resultados
En primer lugar debemos ejecutar el método de Jacobi y el método RedBlack SOR
en secuencial y ver los datos que devuelven, para poder tener así los primeros datos con
los que calcular posteriormente la ganancia en velocidad y la eciencia.
Método Iteraciones Error Ts
JACOBI 7912 9.999883672849208E-8 2.285500
RED-BLACK SOR 195 9.853435983766532E-8 6.4900003E-2
Como podemos observar a primera vista en la ejecución secuencial el método de Red
Black SOR es mejor que el de Jacobi, tanto en iteraciones, como en error relativo y tiempo
de ejecución.
La distribución de temperaturas en la placa de 52 nodos verticales y 104 nodos hori-
zontales tras utilizar el método de Jacobi se presenta en la siguiente gura donde el color
11 5.o Física
12. 6 RESULTADOS Javier García Molleja
rojo indica alta temperatura y el color azul baja. Además, se han incluido ciertos valores
numéricos en las líneas isotermas cercanos a los bordes para comprobar que las condiciones
de contorno no han sido alteradas.
Isotermas (50)
50
11.5686
45
6
17
.1
40 24
35
23.333
61
30 .19
3
20 42.1569
25
20
15
10
02
5
24.9
0
0 10 20 30 40 50 60 70 80 90 100
x
Figura 1: Solución mediante el método de Jacobi
Podemos ver que la solución es bastante buena, ya que la distribución de temperaturas
se adapta a las ideas previas que teníamos: la zona cercana al procesador debe estar
a una temperatura elevada, cercana a los 50o C. Si nos alejamos, la caída será brusca,
regularizándose en las zonas intermedias entre aquél y los contornos. Una vez que nos
acerquemos lo suciente a éstos vemos que la temperatura tiende a la impuesta.
Además, debemos tener en cuenta que la aproximación es bastante buena debido a
la tolerancia que se requería para salir del bucle, 10−7 , por lo que parece que ha sido
correcto el uso de doble precisión a la hora de declarar las variables. Debemos indicar por
último que estos resultados los esperaremos en las distintas ejecuciones en paralelo, ya
que el problema y el método son los mismos, la única diferencia estará en que no todas
las operaciones las realizará el mismo procesador.
De igual manera vamos a mostrar la distribución nal de temperaturas de la placa
obtenida por el método de RedBlack con sobrerrelajación. Es de esperar que la gura
obtenida sea bastante parecida a la anterior, ya que el problema es el mismo, sólo va
variando el método de resolución. Al igual que hemos hecho antes, aparecerá un código de
colores y varios valores numéricos que nos conrmarán los buenos resultados obtenidos.
12 5.o Física
13. Javier García Molleja 6 RESULTADOS
Isotermas (50)
50
11.5686
45
76
.11
40 24
5
627
18.
35
30
23.3
333
25
20
15
10 42.9412
5
02
.9
24
0
0 10 20 30 40 50 60 70 80 90 100
x
Figura 2: Solución mediante el método de RedBlack SOR
Podemos conrmar que los resultados son análogos con la anterior solución, aunque
este método ha necesitado menos operaciones para llegar a la distribución nal. Debemos
también agradecer el uso de la doble precisión por haber llegado a este punto. En este
punto es necesario indicar que las ejecuciones en paralelo mostrarán el mismo resultado.
A continuación vamos a escribir los resultados obtenidos mediante la ejecución en
paralelo con un procesador:
Método Iteraciones Error Tp
JACOBI 7912 9.9998836545329137E-8 1.544000
RED-BLACK SOR 195 9.8534360389497298E-8 7.0000000E-2
Ahora debemos indicar los resultados tras haber ejecutado el programa en paralelo
con dos procesadores:
Método Iteraciones Error Tp
JACOBI 7912 9.9998836545329137E-8 6.656000
RED-BLACK SOR 195 9.8534360389497298E-8 0.3510000
Finalmente, escribimos los resultados obtenidos con cuatro procesadores trabajando
en paralelo:
13 5.o Física
14. 7 DISCUSIÓN DE RESULTADOS Javier García Molleja
Método Iteraciones Error Tp
JACOBI 7912 9.9998836545329137E-8 13.88400
RED-BLACK SOR 195 9.8534360389497298E-8 0.6710000
Tras todos estos datos podemos calcular inmediatamente la ganancia en velocidad y
la eciencia para cada una de las ejecuciones en paralelo:
Para un procesador:
JACOBI: Sp = 1,480246114, así que η = 1,480246114
RED-BLACK: Sp = 0,9271429, así que η = 0,9271429
El mejor es el de JACOBI.
Para dos procesadores:
JACOBI: Sp = 0,343374399, así que η = 0,171687199
RED-BLACK: Sp = 0,184900293, así que η = 0,092450146
El mejor es el de JACOBI.
Para cuatro procesadores:
JACOBI: Sp = 0,041153486, así que η = 0,010288371
RED-BLACK: Sp = 0,096721315, así que η = 0,024180328
El mejor es el de RED-BLACK.
7. Discusión de resultados
Los resultados anteriormente obtenidos llegan a ser lógicos, es decir, mientras más
procesadores trabajando en paralelo más tiempo de ejecución. Esto es debido a que el
número de puntos usados (52x104) es demasiado bajo como para que la ejecución en
paralelo dé buenos resultados. Por este motivo vamos a realizar de nuevo los cálculos para
14 5.o Física
15. Javier García Molleja 7 DISCUSIÓN DE RESULTADOS
el caso, por ejemplo, de 520x1040 puntos. Las condiciones que vamos a introducir como
valores de entrada serán:
TOLERANCIA: 0,001
ITERACIONES: 100000
También es necesario mencionar que en el caso del método de RedBlack SOR vamos a
mantener el valor de w = 1,9, aunque al cambiar el número de puntos del mallado éste ya
no será el valor óptimo. En cualquier caso tras la compilación y ejecución en secuencial
de ambos métodos los resultados serán:
Método Iteraciones Error Ts
JACOBI 350 9.977419886639343E-4 11.51430
RED-BLACK SOR 351 9.999194854023665E-4 18.41900
En tiempo de ejecución y en el número de iteraciones el método de Jacobi es el más
adecuado. Esto puede ser debido a que el parámetro w no es el óptimo. Si paralelizamos
ambos programas, compilamos y ejecutamos con un único procesador los resultados son:
Método Iteraciones Error Tp
JACOBI 350 9.9774198866405396E-4 11.89200
RED-BLACK SOR 351 9.9991948540142364E-4 36.34906
Ahora debemos realizar la ejecución de ambos programas paralelos utilizando dos proce-
sadores cuyos datos de salida son los que presentamos a continuación:
Método Iteraciones Error Tp
JACOBI 350 9.9774198866405396E-4 6.282000
RED-BLACK SOR 351 9.9991948540142364E-4 18.95100
Por último es necesario realizar la ejecución utilizando cuatro procesadores en paralelo.
Entonces:
Método Iteraciones Error Tp
JACOBI 350 9.9774198866405396E-4 3.645000
RED-BLACK SOR 351 9.9991948540142364E-4 10.74700
Una vez conseguido todo este conjunto de datos calcularemos la ganancia en velocidad
y la eciencia para ver en cada caso cuál es el mejor método:
Para un procesador:
JACOBI: Sp = 0,968239152, así que η = 0,968239152
RED-BLACK: Sp = 0,506725621, así que η = 0,506725621
El mejor es el de JACOBI.
15 5.o Física
16. 7 DISCUSIÓN DE RESULTADOS Javier García Molleja
Para dos procesadores:
JACOBI: Sp = 1,832903534, así que η = 0,916451767
RED-BLACK: Sp = 0,971927602, así que η = 0,485963801
El mejor es el de JACOBI.
Para cuatro procesadores:
JACOBI: Sp = 3,158930041, así que η = 0,78973251
RED-BLACK: Sp = 1,713873639, así que η = 0,428468409
El mejor es el de JACOBI.
Como último paso vamos a volver a realizar todos estos cálculos para el caso de que
tengamos 1040x2080 puntos. Por simplicidad mantendremos la misma tolerancia y número
máximo de iteraciones que en el caso anterior, ya que con un nivel de tolerancia bajo los
cálculos serán menos y con un número elevado de iteraciones nos aseguraremos que la
tolerancia ha sido alcanzada. Volveremos a elegir w = 1,9 aunque no sea el valor óptimo.
Los resultados con la compilación y ejecución en secuancial darán
Método Iteraciones Error Ts
JACOBI 350 9.977419886639343E-4 46.34490
RED-BLACK SOR 351 9.999194822266609E-4 74.60610
Otra vez observamos que el mejor método en secuencial es el de Jacobi, pero es necesario
tener en cuenta que el parámetro de sobrerrelajación no es el óptimo. Ahora, compilemos
y ejecutemos en paralelo con un solo procesador:
Método Iteraciones Error Tp
JACOBI 350 9.9774198866405396E-4 46.46800
RED-BLACK SOR 351 9.9991948222642475E-4 143.7870
Presentemos en una tabla los resultados obtenidos al ejecutar con dos procesadores en
paralelo:
Método Iteraciones Error Tp
JACOBI 350 9.9774198866405396E-4 24.05600
RED-BLACK SOR 351 9.9991948222642475E-4 73.82700
16 5.o Física
17. Javier García Molleja 7 DISCUSIÓN DE RESULTADOS
Veamos nalmente los datos que obtenemos al ejecutar con cuatro procesadores en parale-
lo:
Método Iteraciones Error Tp
JACOBI 350 9.9774198866405396E-4 12.8800
RED-BLACK SOR 351 9.9991948222642475E-4 37.83700
Tras esto determinemos la ganancia en velocidad y la eciencia:
Para un procesador:
JACOBI: Sp = 0,997350865, así que η = 0,997350865
RED-BLACK: Sp = 0,518865405, así que η = 0,518865405
El mejor es el de JACOBI.
Para dos procesadores:
JACOBI: Sp = 1,926542235, así que η = 0,963271117
RED-BLACK: Sp = 1,01055305, así que η = 0,505276524
El mejor es el de JACOBI.
Para cuatro procesadores:
JACOBI: Sp = 3,598206522, así que η = 0,89955163
RED-BLACK: Sp = 1,971776304, así que η = 0,492944075
El mejor es el de JACOBI.
Los resultados son lógicos, puesto que el método de RedBlack SOR no contaba con
el valor óptimo de w. Además cuando ejecutamos en paralelo con un único procesador
los tiempos se elevan drásticamente, ya que en esta situación debe ejecutar el código en
secuencial, pero siguiendo el protocolo de la ejecución en paralelo.
También debemos resaltar que en el mallado de 520x1040 puntos utilizando dos proce-
sadores los resultados no son los esperados. Esto puede ser debido a que el procesador
número 2 ha podido tener algunos problemas técnicos que han desvirtuado el resultado.
17 5.o Física
18. REFERENCIAS Javier García Molleja
Es necesario dar a conocer el número tan bajo de iteraciones con las que hemos
obtenido los resultados en dominios tan grandes. El origen puede estar en algún fallo
a la hora de escribir el código o que la tolerancia impuesta es baja, aunque suciente para
tener una solución aceptable. Además el aprovechamiento de memoria caché[4] realizado
por utilizar secciones matriciales, FORALL y WHERE ha podido inuir en el número
total de iteraciones y su tiempo de ejecución.
La sesión realizada presenta gran validez actual. En el mundo de la creación de orde-
nadores es de vital importancia conocer la distribución de temperaturas en la placa, ya
que sus componentes, hechos con silicio, se recalientan demasiado y es necesario que el
ventilador evite posibles daños irreversibles. También se puede encontrar otra aplicación
en el estudio climático, pudiendo de esta manera conocer las posibles distribuciones y las
importantes bajadas o subidas de temperatura tras algún proceso natural o humano. Con
este procedimiento se puede estudiar el clima futuro del planeta y prevenir de las posibles
causas que empeoren el medio ambiente.
Gracias al planteamiento, elaboración, ejecución y resolución llevada a cabo en esta
sesión el conocimiento sobre programación en paralelo se convierte en algo habitual en la
vida profesional del programador, dándole oportunidad de revisar sus antiguos códigos y
con el uso de directivas resolverlo en paralelo. También se recurre al uso asiduo de cons-
trucciones, tales como FORALL y WHERE, que se favorecen en paralelo y la mejora nal
del código para hacerlo más eciente evitando incluir operaciones simples y repetitivas
dentro de los bucles y que además no tienen relevancia directa con los cálculos que estamos
realizando. Es cierto que nos ayuda además a la hora de ver si ciertas construcciones son
susceptibles de ser paralelizadas o no. Por lo que nalmente podemos indicar que la
realización de esta sesión es provechosa en cuanto a la ampliación de conocimientos.
Referencias
[1] M. Marín Beltrán: Ampliación de Métodos Numéricos ; 2005, Universidad de Córdoba
[2] J.L. Cruz Soto: Programación Cientíca ; 2003, Universidad de Córdoba
[3] J.L. Cruz Soto, M. Marín Beltrán: Programación Cientíca Avanzada ; 2006, Univer-
sidad de Córdoba
[4] J.I. Benavides Benítez: Estructura de Computadores ; 2006, Universidad de Córdoba
18 5.o Física