<< Chapter < Page Chapter >> Page >

Para construir un GAD, el compilador toma cada tupla de lenguaje intermedio y lo mapea sobre uno o más nodos. Por ejemplo, aquellas tuplas que representan operaciones binarias, tales como suma ( X=A+B ), forman una porción del GAD con dos entradas ( A y B ) enlazadas por una operación ( + ). El resultado de la operación puede alimentarse a su vez en otras operaciones en el bloque básico (y el GAD), como se muestra en [link] .

Un grafo de flujo de datos trivial

Esta figura contiene una ecuación, X = A + B, y una línea conectando el punto A al punto B, y el punto X al punto B.

Si se trata de un bloque de código básico, construimos nuestro GAD en el orden de las instrucciones. El GAD de para las cuatro instrucciones previas se muestra en [link] . Este ejemplo en particular tiene muchas dependencias, así que no hay mucha oportunidad para el paralelismo. [link] muestra un ejemplo más sencillo sobre cómo construir un GAD permite identificar el paralelismo.

A partir de este GAD, podemos determinar que las instrucciones 1 y 2 pueden ejecutarse en paralelo. Dado que vemos los cálculo que se realizan sobre los valores A y B durante el procesamiento de la instrucción 4, podemos eliminar una subexpresión común durante la construcción del GAD. Si podemos determinar que Z es la única variable que se usa afuera de este pequeño bloque de código, podemos asumir que el cálculo de Y es código muerto.

Un grafo de flujo de datos más complejo

Esta figura contiene ecuaciones, X = A + B, D = X * 17, A = B + C, y X = C + E, y a la derecha de esas ecuaciones está un diagrama de flujo expresando tales ecuaciones juntas.

Al construir el GAD, tomamos una secuencia de instrucciones y determinamos cuáles deben ejecutarse en un orden particular, y cuáles pueden ejecutarse en paralelo. Este tipo de análisis de flujo de datos es muy importante en la fase de generación de código en los procesadores superescalares. Hemos introducido el concepto de dependencias y cómo usar el flujo de datos para encontrar oportunidades de paralelismo en secuencias de código adentro de un bloque básico. También podemos usar el análisis de flujo de datos para identificar dependencias, oportunidades para el paralelismo, y código muerto al interior de bloques básicos.

Usos y definiciones

Conforme se construye el GAD, el compilador puede crear listas de usos y definiciones de variables, así como otra información, y aplicarlas a las optimizaciones globales a través de muchos bloques básicos tomados junto. Al revisar el GAD en [link] , podemos ver que las variables definidas son Z , Y , X , C , y D , y que las variables usadas son A y B . Al tomar en cuenta muchos bloques como uno solo, podemos decir cuan lejos alcanza la definición de una variable particular —dónde puede verse su valor. A partir de esto podemos reconocer situaciones en las cuales se descartan cálculos, lugares donde dos usos de una variable dada son completamente independientes, o dónde podemos reescribir valores residentes en registros sin tener que regresarlos a memoria. Llamamos a este tipo de investigación análisis de flujo de datos .

Extracting parallelism from a dag

This figure contains equations, X = A + B, Y = B + 3, D = X * 7, C = A + B, and Z = D + C, with a flowchart to the right expressing the relationship between the equations.

Para ilustrarlo, supongamos que tenemos el grafo de flujo de [link] . Junto a cada bloque básico hemos listado las variables que usa y las variables que define. ¿Qué nos puede decir al respecto el análisis del flujo de datos?

Observe que el valor de A se definió en el bloque X , pero sólo se usó en el bloque Y . Ello significa que A está muerto hasta la salida del bloque Y o inmediatamente antes de tomar la rama derecha al dejar X ; ninguno de los otros bloques básicos usan el valor de A. Ello nos dice que cualesquiera recursos asociados, tales como un registro, pueden liberarse para otros usos.

En la [link] podemos ver que D está definida en el bloque básico X , pero jamás utilizada. Ello significa que los cálculos que definen a D pueden descartarse.

Algo interesante está sucediendo con la variable G . Tanto el bloque X como el W la utilizan, pero si observa detenidamente verá que los dos usos son distintos, significando que pueden tratarse como dos variables independientes.

Un compilador que instrumente técnicas avanzadas para la planificación adelantada de instrucciones, debe notar que W es el único bloque que usa el valor de E , y así mover los cálculos que definen E fuera del bloque Y y dentro de W , donde se requieren.

Grafo de flujo para análisis de flujo de datos.

Esta figura es un grafo de flujo de cuatro renglones, con una caja en cada renglón y flechas mostrando las relaciones entre las cajas, que están etiquetadas X, Y, W, y Z. A la derecha de las cajas, en sus respectivos renglones, hay listas de letras bajo categorías, Defines, y Uses.

Además de recopilar datos acerca de las variables, el compilador también puede mantener información acerca de subexpresiones. Al examinarlas juntas, puede reconocer casos donde se hacen cálculos redundantes (a lo largo de bloques básicos), y sustituirlos por cálculos previamente realizados. Si, por ejemplo, la expresión H*I aparece en los bloques X , Y , y W , puede calcularse sólo una vez en el bloque X , y propagarse a los otros que la usan.

Questions & Answers

what is biology
Hajah Reply
the study of living organisms and their interactions with one another and their environments
AI-Robot
what is biology
Victoria Reply
HOW CAN MAN ORGAN FUNCTION
Alfred Reply
the diagram of the digestive system
Assiatu Reply
allimentary cannel
Ogenrwot
How does twins formed
William Reply
They formed in two ways first when one sperm and one egg are splited by mitosis or two sperm and two eggs join together
Oluwatobi
what is genetics
Josephine Reply
Genetics is the study of heredity
Misack
how does twins formed?
Misack
What is manual
Hassan Reply
discuss biological phenomenon and provide pieces of evidence to show that it was responsible for the formation of eukaryotic organelles
Joseph Reply
what is biology
Yousuf Reply
the study of living organisms and their interactions with one another and their environment.
Wine
discuss the biological phenomenon and provide pieces of evidence to show that it was responsible for the formation of eukaryotic organelles in an essay form
Joseph Reply
what is the blood cells
Shaker Reply
list any five characteristics of the blood cells
Shaker
lack electricity and its more savely than electronic microscope because its naturally by using of light
Abdullahi Reply
advantage of electronic microscope is easily and clearly while disadvantage is dangerous because its electronic. advantage of light microscope is savely and naturally by sun while disadvantage is not easily,means its not sharp and not clear
Abdullahi
cell theory state that every organisms composed of one or more cell,cell is the basic unit of life
Abdullahi
is like gone fail us
DENG
cells is the basic structure and functions of all living things
Ramadan
What is classification
ISCONT Reply
is organisms that are similar into groups called tara
Yamosa
in what situation (s) would be the use of a scanning electron microscope be ideal and why?
Kenna Reply
A scanning electron microscope (SEM) is ideal for situations requiring high-resolution imaging of surfaces. It is commonly used in materials science, biology, and geology to examine the topography and composition of samples at a nanoscale level. SEM is particularly useful for studying fine details,
Hilary
cell is the building block of life.
Condoleezza Reply
Got questions? Join the online conversation and get instant answers!
Jobilize.com Reply

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