<< Chapter < Page Chapter >> Page >

Distribuciones bidimensionales

Esta figura muestra dos retículas de cajas numeradas. Ambas están tituladas con dos líneas de código. La retícula a la izquierda, con el código (Bloque,Bloque) tiene dieciseis cajas, con bloques de cuatro de ellas numerados 1, 2, 3 y 4, y los números organizados en cuadrantes. La retícula a la derecha, con el código (*, bloque) tiene dieciseis cajas, bloques de cuatro de ellas numerados 1, 2, 3 y 4, y los números organizados en columnas.

Cuando lidie con más de una estructura de datos para realizar un cálculo, puede bien sea distribuirlas separadamente , o bien usar la directiva ALIGN para asegurarse de que los elementos correspondientes de ambas estructuras estén alojados juntos. En el siguiente ejemplo, tenemos un arreglo de placa y un factor de escala que debemos aplicar a cada columna de la placa durante el cálculo:


DIMENSION PLATE(200,200),SCALE(200) !HPF$ DISTRIBUTE PLATE(*,BLOCK)!HPF$ ALIGN SCALE(I) WITH PLATE(J,I)

O bien:


DIMENSION PLATE(200,200),SCALE(200) !HPF$ DISTRIBUTE PLATE(*,BLOCK)!HPF$ ALIGN SCALE(:) WITH PLATE(*,:)

En ambos ejemplos, las variables PLATE y SCALE están ubicadas en los mismos procesadores que las columnas correspondientes de PLATE . La sintaxis * y : comunican la misma información. Cuando se usa * , esa dimensión se colapsa y no participa en la distribución. Cuando se usa : , significa que la esa dimensión sigue a la dimensión correspondiente en la variable que ya ha sido distribuida.

También puede usted especificar el acomodo de la variable SCALE y hacer que la variable PLATE "siga" la distribución de la variable SCALE :


DIMENSION PLATE(200,200),SCALE(200) !HPF$ DISTRIBUTE SCALE(BLOCK)!HPF$ ALIGN PLATE(J,I) WITH SCALE(I)

Puede agregar expresiones aritméticas simples en la directiva ALIGN , sujetas a ciertas limitaciones. Las otras directivas incluyen:

  • PROCESSORS Le permite crear una forma de configuración de los procesos que pueda usarse para alinear otras estructuras de datos.
  • REDISTRIBUTE y REALIGN Le permite cambiar dinámicamente la forma de las estructuras de datos a tiempo de ejecución, conforme cambian los patrones de comunicación durante el curso de la misma.
  • TEMPLATE Le permite crear un arreglo que no usa espacio. En vez de distribuir una estructura de datos y alinear todas las demás, algunos usuarios crearán y distribuirán una plantilla y luego alinearán todas las estructuras de datos reales de acuerdo a esa plantilla.

El uso de directivas puede fluctuar desde lo muy simple a lo muy complejo. En algunas situaciones, usted distribuirá la única estructura grande compartida, alineando unas pocas estructuras relacionadas y habrá terminado. En otras, los programadores intentan optimizar las comunicaciones basándose en la topología de la red de interconexión (hypercubo, red de interconexión multietapa, malla o toroide) usando directivas muy detalladas. También pueden redistribuir cuidadosamente los datos durante las varias fases del cómputo.

Con suerte, su aplicación logrará un buen rendimiento sin demasiado esfuerzo.

Estructuras de control en hpf

Mientras los diseñadores de HPF estaban enmedio de definir un nuevo lenguaje, se dieron a la tarea de mejorar aquello que habían visto como una limitación de FORTRAN 90. Es interesante que tales modificaciones son las que se están considerando como parte del nuevo estándar de FORTRAN 95.

La sentencia FORALL permite al usuario expresar operaciones iterativas sencillas que se aplican al arreglo completo, sin descansar en un ciclo do-loop (recuerde, los ciclos do-loop fuerzan un orden). Por ejemplo:

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