Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Dependencias
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
DEPENDENCIAS
Para poder ejecutar diferentes segmentos de código en paralelo, tenemos que asegurarnos
de que son independientes, es decir, el orden de ejecución no importa (no afecta al
resultado).
Las dependencias entre (grupos de) instrucciones pueden describirse por medio del grafo de
dependencias o grafo de computación.
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
GRAFO DE DEPENDENCIAS
Consideremos dos secuencias de instrucciones S1 y S2, para las que existe un camino de
ejecución entre ellas (S1 primero, y después S2).
Ejemplo:
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
DEPENDENCIAS
● Dependencias de datos
● Dependencias de control
● Dependencias de recursos
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
DEPENDENCIAS DE DATOS
Puede plantearse un conflicto cuando dos instrucciones hacen uso del mismo dato: el orden
de ejecución es importante.
1. Dependencias de flujo
2. Antidependencias
3. Dependencias de salida
4. Dependencias de E/S ( a fichero)
5. Desconocidas
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
DEPENDENCIAS DE DATOS
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
DEPENDENCIAS DE DATOS
3. Dependencia de salida: S1 y S2 escriben en la misma salida.
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
DEPENDENCIAS DE DATOS
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
DEPENDENCIAS DE DATOS
Los casos (4) y (5) presuponen el peor caso posible: en el que no es posible determinar que
está ocurriendo, por lo que se asume que existe una dependencia para evitar posibles
errores.
Ejemplo:
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
DEPENDENCIA DE DATOS
EJEMPLO 2:
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
DEPENDENCIAS DE CONTROL
Dado que el orden no es conocido anticipadamente, las dependencias reales no pueden ser
determinadas.
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
DEPENDENCIAS DE CONTROL
EJEMPLO:
● En ambos casos no sabemos cuál será la próxima instrucción a ser ejecutada después
del test.
● Pero, en el primer caso no hay dependencia de control, y en el segundo caso sí la hay.
¿Por qué?
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
DEPENDENCIA DE RECURSOS
Tenemos dependencias de recursos cuando recursos compartidos del procesador (ej. ALU, UF coma
flotante, buses, etc.) son demandados por instrucciones diferentes al mismo tiempo.
Ejemplo:
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
CONDICIONES DE BERNSTEIN
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
CONDICIONES DE BERNSTEIN
Consideremos los procesos P1 y P2 y sus conjuntos de entrada (I1, I2) y salida (O1, O2)
1. I1 INTER O2 =0 (antidependencia)
2. I2 INTER O1 =0 (flujo)
3. O1 INTER O2 =0 (salida)
● P1 || P2
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
● Conmutativa: Pi || Pj <=> Pj || Pi
● NO transitiva: Pi || Pj and Pj || Pk =/> Pi || Pk
● Asociativa: (Pi || Pj) || Pk => Pi || (Pj || Pk)
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
CONDICIONES DE BERNSTEIN
Detectar qué instrucciones del siguiente código puede También necesitaremos saber qué variables se
ejecutarse en paralelo: acceden en modo escritura. Son las siguientes:
1. x := y+1
● Para la instrucción 1 es la variable "x”.
2. y := x‐2
3. z := a+b ‐7 ● Para la instrucción 2 es la variable "y”.
● Para la instrucción 3 es la variable "z".
Lo primero es establecer qué variables se acceden en
modo lectura. En las instrucciones vemos que son:
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
CONDICIONES DE BERNSTEIN
i1 e i2 no cumple la condición
i1 e i3 si cumple la condición
i2 e i3 si cumple la condición
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
● I1 e I2 no cumple
● I1 e I3 si cumple
● I2 e I3 si cumple
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
I1 e I2 cumple
I1 e I3 cumple
I2 e I3 cumple
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
CONDICIONES DE BERNSTEIN
1y2 NO NO SI NO
1y3 SI SI SI SI
2y3 SI SI SI SI
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
CONDICIONES DE BERNSTEINS
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
CONDICIONES DE BERNSTEIN
1. C = D*E
2. M = G+C
3. A = B+C
4. C = L+M
5. F = G/E
Programación Paralela
Facultad de Ingeniería de Sistemas e Informática
CONDICIONES DE BERNSTEIN
GENERALIZACIÓN
Programación Paralela