RAM⟶PRAM⟶pseudocoˊdigo paralelo⟶Work y Span⟶Speedup
RAM: 1 procesador + memoria infinita de acceso directo; sumar n números es Θ(n).
PRAM: p procesadores idénticos + memoria compartida, ejecutando el mismo código de forma síncrona. Sin red: se comunican vía memoria. Ignora cachés, latencia y costos físicos. Cada paso: leer memoria compartida → cómputo local → escribir.
cada dirección la lee/escribe un solo procesador por paso
suma de vectores, reducción binaria
CREW
lectura concurrente, escritura exclusiva
broadcast; Bi=Ai+x (todos leen x)
ERCW
escritura concurrente, lectura exclusiva
poco usado
CRCW
lectura y escritura concurrentes
Global OR/AND
EREW⊂CREW⊂CRCW
Escritura concurrente (CW):común (todos escriben el mismo dato) · arbitrario (gana uno cualquiera) · combinado (se acumula/reduce lo escrito) · prioritario (gana el de mayor prioridad).
Idea: el paso i tiene Wi operaciones; con p procesadores toma ⌈Wi/p⌉≤Wi/p+1 pasos; sumando sobre los T∞ pasos sale la cota. Versión intuitiva: Tp≤pW−T∞+T∞=pW+(1−p1)T∞.
Costo máximo: Cp=O(W+T∞p); W y Cp coinciden cuando p=O(W/T∞).
C[i,j] := C[i,j] + A[i,(i+j+k) mod n] × B[(i+j+k) mod n, j]
Matrices n×n, tc = tiempo de suma/multiplicación. (3.1) Tp. (3.2) S, E. (3.3) Escalabilidad. (3.4) ¿Qué modelo PRAM?
Para la 3.4, reproduce los accesos paso a paso y compara con el bucle ingenuo:
Multiplicación de matrices en paralelo
k 0/4
Haz clic en una celda de C para seguir a ese procesador P(i,j). Verde = celda leída por 1 procesador; rojo = lectura concurrente.
P(1,2) en paso k=——
máx. lectores de una celda—
escrituras en C[i,j]solo P(i,j)
modelo mínimo—
Con el índice rotado, en cada paso los n² procesadores leen n² celdas distintas de A y de B, y cada uno escribe solo su C[i,j] ⇒ EREW. Fila i fija: j distinto ⇒ columna (i+j+k) mod n distinta. Ts=O(n3)tc,Tp=O(pn3tc+n),E=1+tcn2p1 ⇒ débil: escala si n∝p.
Ver solución
3.1 Cada proceso ejecuta un bucle lineal en n: Tp=O(pn3tc+n).