<< Chapter < Page Chapter >> Page >

Una persona familiarizada con la teoría del flujo calórico también pudiera señalar que el ciclo anterior no implementa exactamente el modelo del flujo calórico. El problema es que los valores en el lado derecho de la asignación en el ciclo ROD, se supone que vienen del ciclo de ejecución anterior, y que el valor en el lado izquierdo es el que tendrá en el siguiente ciclo. Pero debido a la manera en que está escrito, el valor ROD(I-1) viene desde el siguiente ciclo, como se muestra en la [link] .

Este problema puede solucionarse usando una técnica conocida como rojo-negro , en la cual alternamos entre dos arreglos. La [link] muestra cómo opera (usando dos arreglos para eliminar una dependencia) la versión rojo-negro del cálculo. ¡Mata dos pájaros de una sola pedrada! Ahora las matemáticas son precisamente correctas, y no hay recurrencia. Suena como una situación realmente de ganar-ganar.

Calculando el nuevo valor de una celda.

TEsta figura es un diagrama de flujo mostrando cajas comenzando con 100 y seguida por una cadena de cajas etiquetadas 50, 25, 12.5, y luego seis cajas etiquetadas 0. Las cajas también están numeradas de la 1 a la 10. Bajo la cuarta, quinta y sexta cajas está la etiqueta promedio.

Usando dos arreglos para eliminar una dependencia

Esta figura es un diagrama de flujo mostrando cajas que comienzan con la 100 y van seguidas por una cadena de cajas etiquetadas 0. Las cajas también están numeradas de la antigua 1 a la antigua 10. Debajo de la cuarta, quinta y sexta cajas está la etiqueta promedio. Este promedio está acompañado por una gran flecha que apunta hacia abajo a otro diagrama de flujo mostrando cajas que comienzan con la 100 y 50, y van seguidas por una cadena de cajas etiquetadas 0. Las cajas también están numeradas de fija1 a fija 10.

La única desventaja de este enfoque, es que toma el doble de almacenamiento en memoria, y el doble de ancho de banda de memoria. Hay otro enfoque rojo-negro que calcula primero los elementos pares y después los elementos nones de la barra, en dos pasadas. Este enfoque no presenta dependencias de datos entre ambas pasadas. El arreglo ROD nunca tiene todos los valores en el mismo ciclo de ejecución. O bien los valores pares o bien los nones están un ciclo de tiempo adelante de los otros. Se requiere de saltar los elementos de dos en dos y se duplica el ancho de banda necesario, pero no la memoria requerida para resolver el problema. El código código modificado es como sigue:


PROGRAM HEATRED PARAMETER(MAXTIME=200)INTEGER TICKS,I,MAXTIME REAL*4 RED(10),BLACK(10)RED(1) = 100.0BLACK(1) = 100.0 DO I=2,9RED(I) = 0.0 ENDDORED(10) = 0.0 BLACK(10) = 0.0DO TICKS=1,MAXTIME,2IF ( MOD(TICKS,20) .EQ. 1 ) PRINT 100,TICKS,(RED(I),I=1,10) DO I=2,9BLACK(I) = (RED(I-1) + RED(I+1) ) / 2 ENDDODO I=2,9 RED(I) = (BLACK(I-1) + BLACK(I+1) ) / 2ENDDO ENDDO100 FORMAT(I4,10F7.2) END

La salida del programa modificado es como sigue:


% f77 heatred.f heatred.f:MAIN heatred: % a.out1 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 21 100.00 82.38 66.34 50.30 38.18 26.06 18.20 10.35 5.18 0.0041 100.00 87.04 74.52 61.99 50.56 39.13 28.94 18.75 9.38 0.00 61 100.00 88.36 76.84 65.32 54.12 42.91 32.07 21.22 10.61 0.0081 100.00 88.74 77.51 66.28 55.14 44.00 32.97 21.93 10.97 0.00 101 100.00 88.84 77.70 66.55 55.44 44.32 33.23 22.14 11.07 0.00121 100.00 88.88 77.76 66.63 55.52 44.41 33.30 22.20 11.10 0.00 141 100.00 88.89 77.77 66.66 55.55 44.43 33.32 22.22 11.11 0.00161 100.00 88.89 77.78 66.66 55.55 44.44 33.33 22.22 11.11 0.00 181 100.00 88.89 77.78 66.67 55.55 44.44 33.33 22.22 11.11 0.00%

Resulta interesante notar que el programa modificado requiere de más tiempo de convergencia que la primera versión. Converge hasta la iteración 181, en vez de en la 101. Si observa usted la primera versión, notará que debido a la recurrencia, el calor terminaba fluyendo más rápido de izquierda a derecha, dado que el elemento izquierdo de cada promedio era el valor del siguiente ciclo de ejecución. Puede parecer ágil, pero está mal. Existen otros enfoques algorítmicos para resolver las ecuaciones diferenciales en derivadas parciales, tales como el "método rápido multipolo" que acelera la convergencia "legalmente". No asuma que el enfoque de fuerza bruta usado aquí es el único método para resolver este problema en particular. Los programadores siempre deben buscar el mejor algoritmo disponible (sea o no paralelo) antes de intentar escalar el algoritmo "equivocado". Para aquellos cuates que no son científicos encomputación, el tiempo para la solución es más importante que el incremento lineal de velocidad. Generalmente, en este problema, cualquier enfoque converge a los mismos valores eventuales dentro de los límites de la representación de punto flotante.

El problema de flujo calórico es extremadamente simple, y en su forma rojo-negro, resulta inherentemente muy paralelizable con interacciones muy simples de datos. Resulta un buen modelo para una amplia variedad de problemas en los cuales discretizamos espacios bidimensionales y tridimensionales, y realizamos alguna simulación sencilla en tales espacios.

Este problema usualmente puede escalarse creando una malla más fina. A menudo, el beneficio de usar procesadores escalables viene de permitir crear dichas mallas más finas, y no de obtener soluciones en tiempos más cortos. Por ejemplo, puede que usted sea capaz de realizar una simulación climática a nivel mundial, usando una malla con una separación de 200 millas, con un solo procesador en cuatro horas. Usando 100 procesadores, puede que sea capaz de ejecutar la misma simulación usando un tamaño de malla de 20 millas, también en cuatro horas, pero con resultados mucho más precisos. O, utilizando 400 procesadores, puede hacer una simulación de malla aún más fina en una hora.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Cómputo de alto rendimiento. OpenStax CNX. Sep 02, 2011 Download for free at http://cnx.org/content/col11356/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Cómputo de alto rendimiento' conversation and receive update notifications?

Ask