PD02 previos resueltos
Ej. 1 — Suma de números (A, 2 pts)
Sección titulada «Ej. 1 — Suma de números (A, 2 pts)»Enviar un vector de tamaño demora . (a) Determine para con procesos; la suma secuencial de números cuesta ; incluya la comunicación. (b) ; ¿cuándo ? Evalúe con , , , .
Ver solución
(). : cómputo por proceso; reparto; comunicación de sumas parciales al maestro; suma de los parciales en el maestro.
y transformando, la solución oficial obtiene . Numérico: ; ; . Se comprueba la relación: crece con .
Ej. 2 — Escalabilidad N-Body (D, 2 pts)
Sección titulada «Ej. 2 — Escalabilidad N-Body (D, 2 pts)»(1) Puntos de cruce en T vs nodos (64K y 512K cuerpos); gráfico para y speedup vs nodos. (2) FLOPs con en 5000 nodos; ¿depende de ? (3) Condición de escalabilidad. (4) Fuerte y débil.
Ver solución
- Número óptimo de nodos: ≈12 (64K), ≈40 (10⁶). Para el cruce se mueve arriba y a la derecha.
- = 2.5 PFLOP. No depende de N.
- .
- constante ⇒ : no escala. Débil: requiere la condición anterior.
Ej. 3 — Quicksort paralelo (E, 2 pts)
Sección titulada «Ej. 3 — Quicksort paralelo (E, 2 pts)»Cada elemento asignado a un proceso (memoria compartida); pivote aleatorio , , posición por suma de prefijos, recursión en la partición izquierda/derecha. (a) , , , , , escalabilidad (use la complejidad de prefix sum vista en clase). (b) Agregue comunicación colectiva .
Ver solución
(a) ; ; ; ; ⇒ .
(b) ; ⇒ dos condiciones: y , la segunda dominante.
Ej. 1 — p-norma (A, 2 pts)
Sección titulada «Ej. 1 — p-norma (A, 2 pts)», . (a) PRAM y paradigma. (b) , . (c) , . (d) Escalabilidad.
Ver solución
(a) Por proceso : generar su porción; luego
for n/p·s + 1 ≤ i ≤ n/p·(s+1) do norma 1 o 2: norma += |a_i| o norma += a_i² norma ∞: if (norma < |a_i|) norma = |a_i|Paradigma: memoria compartida.
(b) Scatter + Reduce ⇒ ; .
(c) , .
(d) Fuerte: ⇒ no escala. Débil: condiciones y ⇒ escala bajo la primera.
Ej. 2 — Matriz-vector filas vs bloques (B, 1.5 pts)
Sección titulada «Ej. 2 — Matriz-vector filas vs bloques (B, 1.5 pts)»(a) ¿Qué método tiene mayor granularidad? Ventajas/desventajas. (b) Condición de escalabilidad. (c) ¿Cuál es más escalable?
Ver solución
(a) , ⇒ bloques, menor overhead de comunicación. (b) filas ; bloques . (c) Bloques: «cuando crece se requieren menos procesos para mantener la eficiencia constante».
Ej. 3 — DAG (C, 1.5 pts)
Sección titulada «Ej. 3 — DAG (C, 1.5 pts)»double sistema() { double A[n][n], B[n][n], a, b, x, y, z; ini(A,B); // 2n² flops a = tarea_1(A); // O(n²) b = tarea_2(B); // O(n²) s1 = suma_prefijos1(B,a); // O(n) s2 = suma_prefijos2(B,a,b); // O(n) z = s1 + s2; return z;}Parámetros de entrada no se modifican. (3.1) DAG y grado máximo de concurrencia. (3.2) PRAM en memoria compartida. (3.3) , , y para la cantidad mínima de hilos.
Ver solución
(3.1) ini → (tarea_1 ∥ tarea_2) → (s1, usa a ∥ s2, usa a y b) → z. Concurrencia máxima 2.
(3.2)
ini(A,B);barrier();a = tarea_1(A); || b = tarea_2(B);barrier();s1 = suma_prefijos1(B,a); || s2 = suma_prefijos2(B,a,b);barrier();z = s1 + s2;(3.3) , , ; con .
Ej. 1 — Normalización (A, 2 pts)
Sección titulada «Ej. 1 — Normalización (A, 2 pts)», , . (a) PRAM y paradigma. (b) , con comunicación optimizada . (c) , . (d) Escalabilidad.
Ver solución
for 1 ≤ i,j ≤ n² pardo sum += A_ij · A_jif = 1/sumfor 1 ≤ i,j ≤ n² pardo A_ij = A_ij · f, (reducción global : reduce + broadcast). , . Fuerte: , no escala. Débil: si .
Ej. 2 — Matriz-vector (B, 1.5 pts)
Sección titulada «Ej. 2 — Matriz-vector (B, 1.5 pts)»(a) ¿Cuál muestra menor granularidad? ¿Es una ventaja? (b) Escalabilidad. (c) ¿Cuál es más escalable?
Ver solución
Igual que S01: bloques tiene mayor granularidad (filas la menor) y eso es una ventaja (menor overhead). Filas , bloques ; bloques más escalable.
Ej. 3 — DAG (C, 1.5 pts)
Sección titulada «Ej. 3 — DAG (C, 1.5 pts)»double OpArr(double A[], double B[], double C[], int n){ suma_de_prefijos(A,n); // prefijos de A quicksort(B,n); // ordena B scan_left(C+x,n); // acumula C más una constante x for (i=0;i<n;i++){ s1=0; for(j..) s1+=A[j]*B[j]; for(j..) A[j]*=s1; } // tarea 4 for (i=0;i<n;i++){ s2=0; for(j..) s2+=B[j]*C[j]; for(j..) C[j]*=s2; } // tarea 5 a=s1/s2; res=0; for (i=0;i<n;i++) res+=a*C[i]; // cálculo final return res;}(3.1) DAG y concurrencia. (3.2) PRAM. (3.3) , , , .
Ver solución
suma_de_prefijos(A,n) || quicksort(B,n) || scan_left(C+x,n)tarea 4 || tarea 5a = s1/s2; res = 0; for i: res += a*C[i]Concurrencia máxima 3. ; en la forma oficial ; , .
Ej. 1 — Performance N-Body (D, 2.5 pts)
Sección titulada «Ej. 1 — Performance N-Body (D, 2.5 pts)»Gráficas T vs nodos (64K, 512K); cruces = datos experimentales, curvas = teoría. (1.1) Puntos de cruce y . (1.2) FLOPs en 5000 nodos; ¿depende de ? (1.3) Relación speedup–FLOPs. (1.4) Escalabilidad con la fórmula de speedup.
Ver solución
1.1 Óptimo de nodos (≈12 para 64K, ≈40 para 512K); para 1M se mueve arriba/derecha (más procesadores); se proyecta con la fórmula de complejidad. 1.2 2.5 PFLOP; depende ligeramente de N. 1.3 FLOPs, ya que FLOP. 1.4 : cte ⇒ ; escala si .
Ej. 2 — Árbol 2-3 (E, 3 pts)
Sección titulada «Ej. 2 — Árbol 2-3 (E, 3 pts)»(2.1) PRAM y span para buscar elementos. (2.2) , . (2.3) , , . (2.4) Escalabilidad.
Ver solución
for i ← 1 to m pardo R[i] ← busqueda23(T.raiz, Q[i]); . , . Fuerte: ; débil: .
Ej. 3 — Multiplicación de matrices (F, 1.5 pts)
Sección titulada «Ej. 3 — Multiplicación de matrices (F, 1.5 pts)»for each P(i,j): C[i,j] := Σ_k A[i,(i+j+k) mod n] × B[(i+j+k) mod n, j]. (3.1) . (3.2) , . (3.3) Escalabilidad. (3.4) Modelo PRAM.
Ver solución
; ; . Fuerte: . Débil: . Modelo EREW.
Fuente ·previos/2025-I-CS4052-PD02-sol.pdf · previos/2025-II-CS4052-PD02-S01(sol).pdf · previos/2025-II-CS4052-PD02-S02(sol).pdf · previos/2026-I-CS4052-PD02(sol).pdf