Ir al contenido

Modelo DAG

Un DAG G=(V,E)G=(V,E) es un grafo dirigido sin ciclos: vértices = tareas; aristas = canales = dependencias de datos (jj no empieza hasta que ii termina). Todo conjunto de tareas sin arista entre ellas puede ir en paralelo; la ausencia de ciclos garantiza un orden topológico.

Tp≥Tsp  ⇒  S≤pTp≥T∞Smax=WT∞  (paralelismo)T_p\ge\frac{T_s}{p}\;\Rightarrow\;S\le p\qquad\qquad T_p\ge T_\infty\qquad\qquad S_{max}=\frac{W}{T_\infty}\;(\text{paralelismo})
TipoEstructuraParalelismo
Secuencialcadena T0→T1→…T_0\to T_1\to\dots0 %
Paralelotodas independientes100 %
SPA (secuencial-paralelo alternado)niveles fork-join en secuenciapor niveles (pipelines)
NSPAdependencias arbitrariasirregular, scheduling dinámico

DAG: trabajo, span y camino crítico

W = suma de costos de todos los nodos · T∞ = camino más costoso (en tiempo, no en número de nodos) · resaltado en naranja.

T1 · costo O(1)T1T2 · costo O(1)T2T3 · costo O(1)T3T4 · costo O(1)T4T5 · costo O(1)T5T6 · costo O(1)T6T7 · costo O(1)T7T8 · costo O(1)T8T9 · costo O(1)T9T10 · costo O(1)T10T11 · costo O(1)T11T12 · costo O(1)T12T13 · costo O(1)T13T14 · costo O(1)T14T15 · costo O(1)T15T16 · costo O(1)T16T17 · costo O(1)T17T18 · costo O(1)T18
Trabajo W = T_s18
Span T∞9
Paralelismo W/T∞ = S máx2
Concurrencia máx. (ancho)5
Resultado de las notas: W = 18, T∞ = 9 (camino T1→T2→T3→T6→T7→T8→T11→T12→T18).
Cota inferior max(W/p, T∞)9
Brent ⌊W/p⌋ + T∞18
T_p (greedy, simulado)11
S = W/T_p1.64
E = S/p0.818
P0P1T1: [0, 1]T1T2: [1, 2]T2T3: [2, 3]T3T13: [2, 3]T13T6: [3, 4]T6T4: [3, 4]T4T7: [4, 5]T7T9: [4, 5]T9T5: [5, 6]T5T8: [5, 6]T8T10: [6, 7]T10T14: [6, 7]T14T16: [7, 8]T16T11: [7, 8]T11T15: [8, 9]T15T17: [8, 9]T17T12: [9, 10]T12T18: [10, 11]T18t = 11
max⁡ ⁣(Wp,T∞)  ≤  Tp  ≤  ⌊Wp⌋+T∞\max\!\left(\tfrac{W}{p},T_\infty\right)\;\le\;T_p\;\le\;\left\lfloor\tfrac{W}{p}\right\rfloor+T_\infty — el schedule greedy (prioriza el camino más largo restante) siempre cae entre ambas cotas.
DAGWWT∞T_\inftyNota
Ej. 1 (18 tareas O(1)O(1))189contar nodos / camino más largo
Ej. 2 FibonacciW(n)=W(n−1)+W(n−2)+1W(n)=W(n-1)+W(n-2)+1T∞(n)=max⁡(T∞(n−1),T∞(n−2))+1T_\infty(n)=\max(T_\infty(n-1),T_\infty(n-2))+1el árbol de llamadas es el DAG
Ej. 3 suma de 16, p=8p=8154S=15/4S=15/4, E=0.47E=0.47
Ej. 3 suma de 16, p=5p=5155S=15/5S=15/5, E=0.60E=0.60 — menos speedup, más eficiencia
double a,b,c,e,d,f;
T1(&a,&b); // 10n FLOP
c=T2(a); // 2n FLOP
c=T3(c); // 5n FLOP
d=T4(b); // 9n² FLOP
e=T5(c); // 9n² FLOP
f=T6(c); // 11n FLOP
b=T7(c); // 8n FLOP

(a) Genere el DAG. (b) TsT_s, T∞T_\infty, WW. (c) SS y EE sin reducir términos.

Ver solución

Resolución propuesta (el PD01 no trae solución oficial; compárala con el preset «PD01 Ej.2» del playground).

Aristas de flujo (RAW): T1→T2T1\to T2 (a), T2→T3T2\to T3 (c), T1→T4T1\to T4 (b), T3→T5T3\to T5, T3→T6T3\to T6, T3→T7T3\to T7 (c). Además T4→T7T4\to T7 (WAR): T7T7 sobrescribe b, que T4T4 necesita leer antes.

Ts=W=10n+2n+5n+9n2+9n2+11n+8n=18n2+36nT_s=W=10n+2n+5n+9n^2+9n^2+11n+8n=18n^2+36n

Caminos: T1→T2→T3→T5=9n2+17nT1\to T2\to T3\to T5=9n^2+17n; T1→T4→T7=9n2+18nT1\to T4\to T7=9n^2+18n (por la WAR). Entonces

T∞=9n2+18nS=18n2+36n9n2+18n=2E=Sp=18n2+36np (9n2+18n)T_\infty=9n^2+18n\qquad S=\frac{18n^2+36n}{9n^2+18n}=2\qquad E=\frac{S}{p}=\frac{18n^2+36n}{p\,(9n^2+18n)}

Si se elimina la WAR (renombrando b en T7), T∞=9n2+17nT_\infty=9n^2+17n y S=18n2+36n9n2+17n≈2S=\dfrac{18n^2+36n}{9n^2+17n}\approx2. Grado máximo de concurrencia: 3 con la WAR (T4T4, T5T5, T6T6 a la vez); 4 sin ella (T4…T7T4\dots T7).

double a[N],b[N],c[N],v=0.0,w=0.0;
T1(a,&v); T2(b,&w); T3(b,&v);
T4(c,&w); T5(c,&v); T6(a,&w); // leen y modifican ambos argumentos

Calcule TsT_s, T∞T_\infty, WW, SS con tareas O(1)O(1) y luego con T1,T2,T5=O(n)T1,T2,T5=O(n), T3=O(nlog⁡n)T3=O(n\log n), T4=O(log⁡n)T4=O(\log n), T6=O(n2)T6=O(n^2).

Ver solución

Resolución propuesta. Aristas (variable compartida, en orden del programa): T1→T3T1\to T3 (v), T2→T3T2\to T3 (b), T2→T4T2\to T4 (w), T3→T5T3\to T5 (v), T4→T5T4\to T5 (c), T1→T6T1\to T6 (a), T4→T6T4\to T6 (w).

  • O(1)O(1): W=Ts=6W=T_s=6, T∞=3T_\infty=3 (p. ej. T2→T4→T5T2\to T4\to T5), S=2S=2.
  • Heterogéneo: W=3n+nlog⁡n+log⁡n+n2=O(n2)W=3n+n\log n+\log n+n^2=O(n^2); el camino T2→T4→T6T2\to T4\to T6 cuesta n+log⁡n+n2n+\log n+n^2 ⇒ T∞=O(n2)T_\infty=O(n^2) ⇒ S=O(1)S=O(1). La tarea O(n2)O(n^2) en el camino crítico anula el paralelismo.

Autoevaluación

0/5 correctas · 0 respondidas
1. Un DAG tiene W(n)=O(n2)W(n)=O(n^2) y Tinfty(n)=O(n)T_infty(n)=O(n). ¿Cota de Brent?
2. Si una tarea O(n2)O(n^2) está FUERA del camino crítico, ¿qué cambia?
3. Un pipeline de 3 etapas de procesamiento de imágenes es…
4. ¿Por qué Tp≥T∞T_p\ge T_\infty para cualquier pp?
5. Suma de 16 números: con p=8p=8, E=0.47E=0.47; con p=5p=5, E=0.60E=0.60. ¿Por qué?

Fuente ·estudio/02_DAG.md · U1.3-Fundamentos_DAG-apuntes.pdf (Ej. 1–4) · Resumen_U1.3_DAG_y_U2.1_Diseno_Paralelo.md · CS4052-PD01-S02.pdf (Ej. 2) · previos/2025-II PD02 S01/S02 (Ej. 3)