TEL-420 Sistemas Paralelos Módulo M1 · Fundamentos y arquitecturas

Fundamentos, Arquitecturas y Modelos de Rendimiento

Módulo M1 de la asignatura. Diseñado conforme al apartado 20 del programa docente oficial.

EC1 Semanas 1-3 12 horas 13 % de la nota Contenido completo

Introducción del módulo

El diseño de software moderno exige una comprensión profunda de las arquitecturas físicas subyacentes. Durante décadas, el rendimiento de las computadoras aumentó de forma automática gracias al incremento constante de la frecuencia de reloj. Sin embargo, los límites físicos de la materia y la termodinámica detuvieron esta dinámica a mediados de la década de 2000, forzando un cambio de paradigma hacia el cómputo paralelo y distribuido.

En este módulo se abordan los fundamentos teóricos y arquitectónicos indispensables para analizar, evaluar y diseñar sistemas paralelos. Se examinan las razones históricas y físicas que impulsaron la transición al cómputo multinúcleo, las clasificaciones de hardware paralelo, los distintos niveles de paralelismo explotables en software y hardware, los modelos matemáticos para medir la eficiencia del paralelismo y las tecnologías de red que interconectan los nodos de cómputo.

Competencia que se desarrolla (EC1). Analizar la evolución y clasificación de sistemas paralelos, identificando fuentes de paralelismo y aplicando métricas de rendimiento para fundamentar decisiones de diseño en arquitecturas modernas.


1.1 Evolución del hardware y Ley de Moore

En 1965, Gordon Moore, cofundador de Intel, formuló una observación empírica que definiría el ritmo de la industria microelectrónica: la cantidad de transistores integrados en un circuito integrado denso se duplicaría aproximadamente cada año. En 1975 revisó la estimación a un período aproximado de dos años, que es la formulación que se emplea habitualmente:

Transistores(t) = Transistores_0 \times 2^{\frac{t - t_0}{2}}

Esta tendencia se mantuvo de manera asombrosa durante más de cuatro décadas. El incremento continuo en la densidad de integración permitió a los arquitectos de computadoras añadir microestructuras cada vez más complejas dentro del procesador secuencial:

  • Buffers de predicción de saltos (branch predictors).
  • Ejecución fuera de orden (out-of-order execution).
  • Múltiples niveles de memoria caché integrada (L_1, L_2, L_3).
  • Unidades de ejecución superscalares y segmentadas (pipelined execution units).

Durante este período, el programador de software no necesitaba modificar sus algoritmos secuenciales para obtener un mejor rendimiento: bastaba con esperar a la siguiente generación de microprocesadores para que el mismo código se ejecutara sustancialmente más rápido.

Ley de Moore y evolución del rendimiento mononúcleo

Figura 1.1. La Ley de Moore describe la densidad de transistores, no el rendimiento. Durante cuatro décadas el aumento de transistores se tradujo en microarquitecturas cada vez más complejas y en una mejora automática del rendimiento mononúcleo.

1.1.1 El Muro Térmico y los límites de frecuencia

Junto a la Ley de Moore, el crecimiento de la industria estuvo sustentado por la Escala de Dennard, formulada por Robert H. Dennard en 1974. Esta ley establecía que, al reducir las dimensiones físicas de un transistor, la densidad de potencia se mantenía constante. Es decir, los transistores se volvían más pequeños y rápidos, pero consumían menos energía en proporción, manteniendo el consumo térmico total por unidad de área en niveles controlables.

Aproximadamente en el año 2005, la Escala de Dennard colapsó debido a efectos cuánticos a escala nanométrica, principalmente el aumento de la corriente de fuga (leakage current). La potencia consumida por un circuito CMOS se define mediante la suma de la potencia dinámica y la potencia estática:

P_{total} = P_{dinámica} + P_{estática}

P_{dinámica} = C \cdot V^2 \cdot f

Para incrementar la frecuencia de reloj f era necesario mantener un voltaje V relativamente alto. Sin embargo, al escalar los chips por debajo de los 90 nanómetros, el voltaje no pudo seguir reduciéndose sin inestabilidad, mientras que la corriente de fuga (P_{estática}) creció exponencialmente. El resultado fue la generación de una cantidad inmanejable de calor por unidad de superficie, fenómeno conocido como el Muro Térmico (Power Wall).

Superar frecuencias de reloj de 4.0 GHz a 5.0 GHz en enfriamiento por aire convencional requería un consumo energético inviable y disipadores con riesgos de falla estructural.

1.1.2 La transición imperativa al cómputo multinúcleo

Al no poder incrementar la frecuencia de reloj individual para elevar el rendimiento secuencial, la industria de semiconductores cambió de estrategia: en lugar de construir procesadores mononúcleo cada vez más rápidos y complejos, comenzaron a integrar múltiples núcleos de procesamiento más simples en un solo chip de silicio.

Si se reduce la frecuencia de reloj un 20 %, la potencia dinámica se reduce aproximadamente un 50 %, gracias a la relación cuadrática con el voltaje. Esto permite colocar dos núcleos operando a menor frecuencia dentro del mismo presupuesto térmico (Thermal Design Power, TDP), multiplicando la capacidad teórica de procesamiento paralelo.

Transición al cómputo multinúcleo

Figura 1.2. La transición al multinúcleo. Un núcleo único con alta frecuencia queda atrapado por el límite térmico; varios núcleos a menor frecuencia caben en el mismo presupuesto de potencia.

Esta transición cambió la responsabilidad del rendimiento desde los fabricantes de hardware hacia los desarrolladores de software: a partir de este punto, para que un programa sea más rápido en una computadora moderna, debe estar explícitamente diseñado de forma paralela.


1.2 Taxonomía de Flynn y clasificaciones modernas

En 1966, Michael J. Flynn propuso una taxonomía para clasificar las arquitecturas de computadoras según el flujo de datos y el flujo de instrucciones que procesan simultáneamente.

Taxonomía clásica de Flynn

Figura 1.3. Taxonomía de Flynn. Las cuatro categorías se definen por el cruce entre el número de flujos de instrucciones y el número de flujos de datos.

  • SISD (Single Instruction, Single Data). Corresponde al modelo secuencial von Neumann tradicional. Un único procesador ejecuta una sola instrucción sobre un solo dato en cada instante de tiempo.
  • SIMD (Single Instruction, Multiple Data). Una única instrucción es ejecutada simultáneamente sobre múltiples elementos de datos por distintas unidades de procesamiento. Ejemplos: procesadores vectoriales, extensiones SIMD en CPU (AVX-512, ARM Neon) y unidades de procesamiento gráfico (GPU).
  • MISD (Multiple Instruction, Single Data). Múltiples instrucciones operan sobre la misma corriente de datos. Es una arquitectura poco común comercialmente; se utiliza principalmente en sistemas críticos con alta tolerancia a fallas, como computadoras de navegación aeroespacial, donde múltiples algoritmos verifican el mismo dato de entrada de forma redundante.
  • MIMD (Multiple Instruction, Multiple Data). Múltiples unidades de procesamiento independientes ejecutan simultáneamente distintas secuencias de instrucciones sobre conjuntos de datos totalmente independientes. Es la clase dominante en la computación paralela moderna (procesadores multinúcleo, servidores multiprocesador y clústeres).

1.2.1 Clasificaciones arquitectónicas modernas

Mientras que Flynn clasifica según los flujos de ejecución, la clasificación moderna categoriza los sistemas MIMD según la organización física y lógica del sistema de memoria.

Arquitecturas UMA y NUMA

Figura 1.4. Comparación entre una arquitectura UMA/SMP, con un único bus compartido, y una arquitectura NUMA de dos sockets, con memoria local y memoria remota por socket.

A. Sistemas de memoria compartida (Shared Memory Systems). Todos los procesadores o núcleos comparten un único espacio de direcciones de memoria RAM física global. Cualquier procesador puede leer o escribir en cualquier posición de memoria.

  • SMP (Symmetric Multiprocessing, acceso uniforme UMA). Todos los procesadores se conectan a la memoria principal a través de un bus o red compartida. El tiempo de latencia para acceder a cualquier celda de memoria es estrictamente idéntico para cualquier núcleo:

T_{acceso} = \text{constante}

Posee limitaciones de escalabilidad física debido al embotellamiento del bus central.

  • NUMA (Non-Uniform Memory Access, acceso no uniforme). Utilizado en servidores modernos con múltiples sockets. La memoria física está dividida y asignada localmente a cada procesador o socket. Un núcleo tarda menos tiempo en acceder a su memoria local que a la memoria remota asignada a otro procesador. Los procesadores se comunican mediante interconexiones de alta velocidad punto a punto integradas en el chip (como Intel UPI o AMD Infinity Fabric).

B. Sistemas de memoria distribuida (Distributed Memory Systems). Cada nodo de procesamiento constituye una computadora independiente por completo, con su propio procesador, su propia memoria RAM privada y su propio sistema operativo.

  • Clústeres. Un conjunto de nodos de cómputo interconectados mediante una red de alta velocidad y baja latencia (InfiniBand, Ethernet 10G/100G). No existe un espacio de memoria físico compartido. La transferencia de datos entre nodos debe realizarse explícitamente mediante el paso de mensajes (Message Passing) a través de la red.

Nota.

Por qué el estudiante debe considerar la afinidad de CPU. En NUMA el coste de un acceso a memoria depende de la distancia entre el hilo y el dato. Si el planificador coloca un hilo en un socket distinto de donde viven sus datos, cada acceso paga la penalización de la memoria remota. La afinidad de CPU fija el hilo al núcleo más próximo y elimina esa penalización. Es una de las optimizaciones de mayor impacto en servidores de dos sockets o más.


1.3 Fuentes de paralelismo: instrucción, datos, tareas y flujo

El paralelismo puede explotarse en diferentes niveles de abstracción, desde la microarquitectura física del procesador hasta la arquitectura del software de la aplicación.

Niveles de abstracción del paralelismo

Figura 1.5. Los cuatro niveles de abstracción del paralelismo, del hardware al nivel de aplicación o tareas.

1.3.1 Paralelismo a nivel de instrucción (ILP)

El ILP se ejecuta de manera completamente transparente al software, llevado a cabo directamente por el procesador.

Mecanismos del paralelismo a nivel de instrucción

Figura 1.6. Tres mecanismos de ILP: segmentación temporal, superescalabilidad espacial y ejecución fuera de orden.

  • Segmentación (Pipelining). Divide la ejecución de una instrucción en varias etapas (Fetch, Decode, Execute, Memory, Write-back). Múltiples instrucciones se encuentran en diferentes fases de procesamiento simultáneamente.
  • Superescalabilidad. El procesador contiene múltiples unidades aritmético-lógicas (ALU) y de punto flotante (FPU), lo que le permite emitir e iniciar múltiples instrucciones independientes en un solo ciclo de reloj.
  • Ejecución fuera de orden (Out-of-Order Execution). El hardware reordena dinámicamente las instrucciones del flujo del programa para evitar paradas (stalls) por dependencias de datos, ejecutando instrucciones posteriores que ya tengan sus operandos listos.

1.3.2 Paralelismo a nivel de datos (DLP)

Ocurre cuando la misma operación matemática o lógica debe aplicarse a un conjunto masivo de datos independientes, como arreglos o vectores. Se implementa mediante instrucciones SIMD en CPU: por ejemplo, cargar en un registro vectorial de 512 bits ocho números de precisión doble de 64 bits y sumarlos con una sola instrucción VADDPD.

Suma vectorial SIMD

Figura 1.7. Una misma instrucción aplicada a ocho datos en paralelo. Los tres registros vectoriales A, B y C siguen el modelo SIMD clásico.

Constituye la base fundamental del procesamiento en GPUs.

1.3.3 Paralelismo a nivel de tareas o control (TLP)

En este nivel, la aplicación se divide en tareas completamente funcionales e independientes que se ejecutan simultáneamente en distintos hilos o procesos.

Hilo 1 -> simulación de física
Hilo 2 -> inteligencia artificial de los enemigos
Hilo 3 -> renderizado
Hilo 4 -> lectura de disco y audio

Ejemplo típico: en un motor de videojuego, un hilo ejecuta la simulación de física, otro gestiona la inteligencia artificial y un tercero administra el renderizado. Requiere el diseño explícito del programador mediante librerías de hilos (POSIX Threads, OpenMP) o paso de mensajes (MPI).

1.3.4 Paralelismo de flujo o tubería de procesamiento

Aplica el concepto de segmentación de hardware a la arquitectura de datos del software. La tarea global se descompone en una secuencia de etapas en serie, donde la salida de una etapa constituye la entrada de la siguiente.

Entrada ---> [Etapa 1: Lectura] ---> [Etapa 2: Cómputo] ---> [Etapa 3: Escritura] ---> Salida

Cada etapa es ejecutada por un hilo o proceso diferente. Cuando el pipeline está lleno, todas las etapas procesan datos en paralelo sobre diferentes bloques de información de la corriente de entrada.

Nota.

En régimen permanente, el rendimiento de un pipeline queda limitado por su etapa más lenta (bottleneck). Repartir el trabajo en etapas de duración muy desigual no mejora el rendimiento y sí aumenta el número de hilos que hay que gestionar.


1.4 Métricas de rendimiento: Speedup, Eficiencia y Escalabilidad

Evaluar la eficiencia de un programa paralelo requiere herramientas matemáticas cuantitativas. No todo programa paralelizado es necesariamente más rápido, debido a los costos asociados a la sincronización y la comunicación.

1.4.1 Ganancia de velocidad (Speedup)

Mide cuántas veces es más rápida la ejecución paralela en comparación con la ejecución secuencial óptima:

S_p = \frac{T_1}{T_p}

Donde T_1 es el tiempo de ejecución del mejor algoritmo secuencial en un procesador, y T_p el tiempo de ejecución del algoritmo paralelo utilizando p procesadores.

1.4.2 Eficiencia

Mide la fracción del tiempo que los procesadores están empleando en trabajo útil en lugar de estar ociosos o gestionando sobrecostos del sistema:

E_p = \frac{S_p}{p} = \frac{T_1}{p \cdot T_p}

Idealmente, S_p = p (aceleración lineal perfecta) y E_p = 1 (100 % de eficiencia). En la práctica, E_p < 1 debido al overhead de paralelización. En casos excepcionales puede observarse una aceleración superlineal (S_p > p), debido principalmente al efecto de localidad de la memoria caché al dividir el tamaño del problema por procesador.

1.4.3 Escalabilidad y granularidad

  • Escalabilidad fuerte (Strong Scaling). Mide cómo disminuye el tiempo de ejecución T_p al aumentar el número de procesadores p, manteniendo fijo el tamaño total del problema.
  • Escalabilidad débil (Weak Scaling). Mide cómo varía T_p al aumentar p simultáneamente con el tamaño del problema, manteniendo constante la carga de trabajo por procesador.
  • Granularidad. Es la relación entre la cantidad de cómputo útil y la cantidad de comunicación requerida:

G = \frac{T_{cómputo}}{T_{comunicación}}

Granularidad fina: poca computación entre fases de comunicación, con elevado riesgo de overhead. Granularidad gruesa: gran volumen de computación entre sincronizaciones, lo que favorece una alta eficiencia.


1.5 Ley de Amdahl y Ley de Gustafson

1.5.1 Ley de Amdahl: modelo de carga de trabajo fija

Formulada por Gene Amdahl en 1967, establece el límite teórico superior del speedup de un programa paralelo cuando el tamaño total del problema se mantiene fijo (Strong Scaling).

Deducción matemática. Sea T_1 = 1 el tiempo total de ejecución secuencial. Supóngase que el código se divide en dos partes: una fracción secuencial s, que no se puede paralelizar, y una fracción paralelizable p_f = (1 - s), donde 0 \leq s \leq 1, perfectamente distribuible entre p procesadores.

S_p = \frac{1}{s + \frac{(1 - s)}{p}}

Límite asintótico de Amdahl. Si el número de procesadores tiende al infinito (p \to \infty):

\lim_{p \to \infty} S_p = \frac{1}{s}

Límite asintótico de la Ley de Amdahl

Figura 1.8. El speedup crece al principio con rapidez y después se aplana: la fracción secuencial marca un techo que ningún número de procesadores permite superar.

Implicación crítica. Si un programa contiene solo un 5 % de código estrictamente secuencial (s = 0.05), el speedup máximo absoluto alcanzable, sin importar si se emplean un millón de procesadores, será:

S_{max} = \frac{1}{0.05} = 20

1.5.2 Ley de Gustafson-Barsis: modelo de tiempo fijo

En 1988, John Gustafson y Edwin Barsis argumentaron que la Ley de Amdahl era desmedidamente pesimista, ya que en la práctica las computadoras más grandes no se construyen para ejecutar los mismos problemas pequeños más rápido, sino para resolver problemas mucho más grandes en el mismo lapso de tiempo (Weak Scaling).

Deducción matemática. Sea el tiempo de ejecución en paralelo T_p = 1, compuesto por una fracción de tiempo secuencial s' y una fracción de tiempo paralelo p' = (1 - s'). Si este mismo problema escalado se ejecutará de forma secuencial en un solo procesador, la parte paralela requeriría p veces más tiempo:

T_1 = s' + p \cdot (1 - s')

Dado que S_p = \frac{T_1}{T_p} y T_p = 1:

S_p = s' + p \cdot (1 - s')

Reordenando los términos se obtiene la forma habitual de la ley:

S_p = p - s' \cdot (p - 1)

Implicación crítica. La Ley de Gustafson demuestra que el speedup crece linealmente con respecto al número de procesadores p. Al aumentar el tamaño de los datos, la fracción secuencial $s' se vuelve insignificante en proporción al volumen total de datos procesados en paralelo.

Nota.

Amdahl y Gustafson no se contradicen: responden a preguntas distintas. Amdahl pregunta ¿cuánto más rápido puedo hacer este problema?, con el problema fijo. Gustafson pregunta ¿qué problema puedo resolver en el mismo tiempo?, con el tiempo fijo. Elegir el modelo equivocado lleva a decidir mal cuántos procesadores comprar: bajo Amdahl, ampliar la máquina rinde cada vez menos; bajo Gustafson, rinde cada vez más.


1.6 Cuellos de botella en sistemas paralelos

El Muro de Memoria (Memory Wall)

Existe una brecha creciente entre la velocidad de cálculo de la CPU y el ancho de banda y latencia de la memoria DRAM. Si múltiples núcleos solicitan datos a la memoria RAM simultáneamente, el bus de memoria se satura, provocando estancamientos (memory bus contention).

Sobrecosto de comunicación y sincronización (Overhead)

El tiempo gastado en enviar mensajes por red (MPI), gestionar exclusión mutua mediante cerrojos (locks en OpenMP) o esperar en barreras de sincronización reduce directamente la eficiencia E_p.

Nota.

Una consecuencia práctica del Muro de Memoria es que añadir núcleos deja de ayudar cuando el programa ya es memory bound. A partir de ese punto, la única vía es reducir el tráfico de memoria: mejorar la localidad de los datos, usar bloques de trabajo (blocking) o replantear el algoritmo. Medir antes de optimizar no es opcional: sin profiling, es fácil añadir hilos que solo empeoran el problema.


1.7 Redes de interconexión: topologías y características

En los sistemas de memoria distribuida y arquitecturas NUMA, las redes de interconexión definen cómo se comunican las unidades de procesamiento y memoria.

1.7.1 Conceptos y métricas fundamentales

  • **Latencia (\tau).** Tiempo total necesario para transmitir un mensaje de tamaño cero desde el origen hasta el destino. Incluye el tiempo de propagación física y el tiempo de conmutación.
  • **Ancho de banda (B).** Cantidad máxima de datos procesados o transferidos por unidad de tiempo (GB/s o Gbps).
  • Diámetro de la red. Distancia máxima, medida en número de saltos (hops), entre los dos nodos más alejados de la topología.
  • Ancho de banda de bisección. Tasa de transferencia total si la red se corta conceptualmente en dos partes de igual tamaño mediante la bisección más desfavorable.
  • Grado de nodo. Número de enlaces físicos conectados directamente a cada nodo.

1.7.2 Topologías directas e indirectas

A. Topologías directas (nodos de cómputo integrados con conmutadores).

Topologías directas: malla 2D e hipercubo 3D

*Figura 1.9. Malla 2D e hipercubo 3D. El hipercubo reduce el diámetro de \sqrt{N} a \log_2 N, a costa de un mayor grado por nodo.*

  • Bus compartido. Todos los nodos se conectan a un único medio. Económico pero no escalable, por la elevada contención.
  • Malla 2D (Mesh). Nodos dispuestos en una grilla regular bidimensional. Diámetro O(\sqrt{N}). Escalabilidad física simple en placas de circuito.
  • Toro (Torus). Malla 2D o 3D con enlaces envolventes en los extremos. Reduce el diámetro a la mitad en comparación con la malla estándar.
  • **Hipercubo de dimensión k.** N = 2^k nodos. Cada nodo se conecta a k vecinos cuyas direcciones difieren en exactamente 1 bit. Diámetro muy bajo (k = \log_2 N), pero el grado de nodo aumenta con la escala de la red.

B. Topologías indirectas (nodos conectados a conmutadores intermedios).

Topologías indirectas: matriz de conmutación y Fat-Tree

Figura 1.10. Matriz de conmutación (crossbar*) y red jerárquica Fat-Tree. La matriz escala en O(N^2); el Fat-Tree escala en O(N \log N).*

  • Matriz de conmutación (Crossbar o Barra Cruzada). Conectan entradas a M salidas mediante una rejilla de conmutadores mecánicos o electrónicos. Permite comunicaciones no bloqueantes concurrentes. Su costo crece en O(N^2), haciendo inviable su uso en redes de gran escala.
  • Fat-Tree (Árbol Gordo). Red jerárquica donde el ancho de banda de los enlaces aumenta progresivamente hacia las capas superiores, la raíz del árbol. Evita los embotellamientos típicos de los árboles tradicionales de redes LAN. Es la topología dominante en centros de datos y en HPC.

1.7.3 Tecnologías de interconexión de alta velocidad

Para supercomputación y clústeres, las redes Ethernet tradicionales, por ejemplo 1 Gbps, introducen latencias elevadas que degradan la eficiencia en librerías de paso de mensajes como MPI.

CaracterísticaEthernet estándar (10G/100G)InfiniBand (HDR / NDR)
Latencia típica0 a 50 microsegundosmenor que 0.8 microsegundos
Acceso a memoriaVía socket del SO (copia en kernel)RDMA (acceso directo a memoria remota)
Sobrecosto de CPUAlto (interrupciones del sistema)Nulo (descargado a la HCA o NIC)
Control de flujoPor software, con pérdida de paquetes (TCP)Por hardware basado en créditos, sin pérdida

El protocolo RDMA. La clave de la tecnología InfiniBand radica en el Remote Direct Memory Access. Esta técnica permite a la tarjeta de red (Host Channel Adapter, HCA) leer o escribir datos directamente en la memoria RAM de un nodo remoto, sin intervención del sistema operativo ni copia intermedia en los buffers del kernel de la CPU. Esto reduce los tiempos de latencia drásticamente en aplicaciones paralelas de alto rendimiento.

Mecanismo RDMA entre nodos

Figura 1.11. Con RDMA la aplicación del nodo origen escribe directamente en la memoria del nodo destino, sin atravesar el kernel ni el sistema operativo.


Actividades teórico-prácticas

Actividades de la sección 1.1

Análisis de consumo de potencia. Un procesador mononúcleo opera a una frecuencia f = 4.0 GHz con un voltaje de operación V = 1.2 V. Suponga que la potencia dinámica es de 100 W.

  1. Determine el factor de reducción de la potencia dinámica si la frecuencia se reduce a 2.8 GHz y el voltaje a 0.9 V.
  2. Explique cuantitativamente por qué es energéticamente eficiente reemplazar un procesador mononúcleo por un sistema quad-core (4 núcleos) operando a frecuencias reducidas.

Cuestionario conceptual.

  1. ¿Por qué la Ley de Moore sigue cumpliéndose en términos de cantidad de transistores, pero la velocidad de reloj de un procesador individual se ha estancado?
  2. Defina el concepto de Escala de Dennard y describa la causa física de su colapso.

Actividades de la sección 1.2

Clasificación arquitectónica. Clasifique cada uno de los siguientes entornos computacionales dentro de la Taxonomía de Flynn y la categorización de memoria correspondiente:

  1. Una GPU NVIDIA RTX ejecutando un kernel con miles de hilos idénticos sobre distintos píxeles de una imagen.
  2. Un supercomputador compuesto por 500 nodos de servidores independientes conectados por InfiniBand.
  3. Un servidor de base de datos con 2 procesadores AMD EPYC de 64 núcleos cada uno dentro de la misma placa base.

Análisis NUMA contra UMA. Explique qué es el factor NUMA (distancia de acceso a memoria local contra remota) y por qué un programador debe considerar la afinidad de CPU al desarrollar software crítico en esta arquitectura.

Actividades de la sección 1.3

Análisis de dependencias e ILP. Considere el siguiente fragmento de código en lenguaje ensamblador abstracto:

Programa ensamblador de ejemplo

Figura 1.12. Programa de ejemplo para el análisis de dependencias de datos.

  1. Identifique las dependencias de datos verdaderas (Read-After-Write, RAW).
  2. Indique qué instrucciones podrían ejecutarse en paralelo dentro de una arquitectura superescalar de dos vías.

Diseño de pipeline de software. Dibuje un esquema temporal de procesamiento (diagrama de Gantt) para un pipeline de software de 3 etapas operando sobre 5 bloques de datos secuenciales. Calcule cuántos ciclos toma procesar todos los bloques en comparación con la ejecución secuencial pura.

Actividades de la sección 1.4

Problema de aplicación de la Ley de Amdahl. Un perfilador de código determina que el 85 % del tiempo de ejecución de un programa de simulación hidrológica es paralelizable, mientras que el 15 % restante es de lectura y escritura en disco, estrictamente secuencial.

  1. Calcule el speedup esperado y la eficiencia del sistema si se ejecuta en un procesador de 8 núcleos.
  2. Calcule el speedup teórico máximo alcanzable si se dispone de un clúster de 1024 núcleos.

Problema comparativo Amdahl contra Gustafson. Un código paralelo se ejecuta en p = 64 procesadores durante un tiempo T_p = 100 segundos. La fase secuencial del código toma s' = 2 segundos en los procesadores.

  1. Obtenga el speedup de Gustafson-Barsis para este problema escalado.
  2. Compare este resultado con la predicción de Amdahl si la fracción secuencial fija original del problema fuera del 2 %.

Cálculo de eficiencia. Un programa de procesamiento de imágenes tarda 240 segundos en ejecutarse secuencialmente en un procesador. Al ejecutarlo en paralelo sobre 16 núcleos, el tiempo disminuye a 20 segundos.

  1. Calcule el speedup S_{16}.
  2. Calcule la eficiencia E_{16}.
  3. Determine el tiempo perdido por sobrecosto de paralelización (overhead).

Actividades de la sección 1.7

Análisis comparativo de topologías. Complete la siguiente tabla comparativa para un sistema paralelo con N nodos:

TopologíaGrado de nodoDiámetro de la redAncho de banda de bisección
Anillo 1D2\lfloor N/2 \rfloor2
Malla 2D (\sqrt{N} \times \sqrt{N})
Hipercubo (k = \log_2 N)
Crossbar (N \times N)

Cálculo de tiempo de transmisión en red. Un algoritmo MPI debe transferir un mensaje de 16 MB entre dos nodos de cómputo.

  • Caso A: red Gigabit Ethernet, \tau = 50 microsegundos y B = 1 Gbps = 125 MB/s.
  • Caso B: red InfiniBand NDR, \tau = 0.5 microsegundos y B = 400 Gbps = 50{,}000 MB/s.

Utilizando el modelo de comunicación

T(m) = \tau + \frac{m}{B}

calcule el tiempo total de transferencia para ambos casos y analice la influencia de la latencia contra el ancho de banda.


Evaluación global del módulo 1

Un centro de computación científica desea adquirir un clúster para simulaciones climáticas. Tiene dos opciones dentro del mismo presupuesto económico:

  • Opción A. Un sistema de 128 nodos con procesadores de alta frecuencia de reloj conectados por Gigabit Ethernet.
  • Opción B. Un sistema de 64 nodos con procesadores de menor frecuencia pero interconectados mediante InfiniBand con soporte RDMA.

Consigna. Sabiendo que los algoritmos de simulación climática requieren constantes comunicaciones globales (reducciones y dispersión de datos de grano fino entre nodos vecinos), redacte un informe técnico justificando la elección de la opción más adecuada con base en los conceptos de granularidad, overhead de red y las Leyes de Amdahl y Gustafson.

Criterios de evaluación de esta actividad.

CriterioDescripciónPuntaje
Fundamentación teóricaAplica correctamente las Leyes de Amdahl y Gustafson al caso20
Análisis de redCompara granularidad, latencia y ancho de banda de ambas opciones20
CuantificaciónEstima tiempos de transferencia y colectivas con los datos del enunciado25
Justificación técnicaArgumenta cuál es mejor y por qué, sin afirmaciones sin sustento25
Redacción técnicaInforme claro, ordenado, con cálculos explicitados10
Total100

Actividades autónomas del estudiante

  1. Serie de ejercicios sobre métricas de rendimiento (entregable, fin de semana 2). Resolver los ejercicios de cálculo de speedup y eficiencia, y entregar el desarrollo paso a paso.
  2. Informe comparativo de taxonomías (entregable, fin de semana 3). Comparar las clasificaciones de Flynn, SMP, NUMA y memoria distribuida, con al menos tres casos reales de la industria: Intel Xeon, AMD EPYC o NVIDIA A100.
  3. Investigación bibliográfica sobre la evolución de los procesadores y la Ley de Moore.
  4. Análisis de datasheets de procesadores paralelos comerciales (Intel Xeon, AMD EPYC, NVIDIA A100): identificar número de núcleos, ancho de banda de memoria e interconexión.
  5. Lectura de los capítulos 1 y 2 de las referencias bibliográficas sobre paralelismo.

Nota.

Actividades relacionadas con la investigación: investigación documental, estudio de caso y análisis de datasheets. Actividades relacionadas con la interacción social: no se requieren para este módulo; se desarrollan en el módulo 5 y en el proyecto integrador.


Bibliografía del módulo

  • Pacheco, P. (2021). An introduction to parallel programming (2nd ed.). Morgan Kaufmann.
  • Quinn, M. J. (2004). Parallel programming in C with MPI and OpenMP. McGraw-Hill.
  • Grama, S., Gupta, A., Karypis, G., y Kumar, V. (2003). Introduction to parallel computing. Academic Press.
  • Kirk, D. B., y Hwu, W. W. (2016). Programming massively parallel processors: a hands-on approach (3rd ed.). Morgan Kaufmann.
  • Hennessy, J. L., y Patterson, D. A. (2019). Computer organization and design: the hardware/software interface (2nd ed.). Morgan Kaufmann.

Documento derivado de 00-marco/programa-docente-TEL420-V2.docx, apartados 20.1 y 21. Las figuras provienen del material original del módulo; los diagramas están en inglés, idioma en que fueron producidos.

Actividades de Aprendizaje Autónomo — Módulo 1 (EC1)

Asignatura: TEL-420 · Sistemas Paralelos Módulo 1: Fundamentos, Arquitecturas y Modelos de Rendimiento Docente: Ing. Elias Cassal Baldiviezo Horas de dedicación autónoma: 6 horas Semanas de ejecución: 1 a 3


1. Justificación y propósito pedagógico

De acuerdo con el apartado 20.1 del Programa Docente del Proyecto Formativo, el aprendizaje autónomo complementa las sesiones teóricas y los talleres prácticos, promoviendo el pensamiento crítico, la investigación bibliográfica rigurosa y la capacidad del estudiante para fundamentar decisiones de diseño de hardware en sistemas de cómputo paralelo.


2. Bloque de Actividades Autónomas Obligatorias

Actividad A1: Resolución de serie de ejercicios sobre métricas de rendimiento y Ley de Amdahl

  • Momento de entrega: Fin de la Semana 2.
  • Instrumento de evaluación: file:///home/eliasdev/sistemas_paralelos/10-modulos/M1-fundamentos/rubrica-ejercicio-calculos.md (ponderado en EC1).
  • Consigna de trabajo:
  • Descargar la guía de ejercicios graduados de M1.
  • Resolver analíticamente los 5 problemas de cálculo de Speedup, Eficiencia, Fracción serial oculta (f) y límites asintóticos de Amdahl vs. Gustafson.
  • Incluir el desarrollo algebraico paso a paso y la interpretación física ingenieril de cada resultado.

Actividad A2: Investigación documental de datasheets de procesadores comerciales y taxonomía

  • Momento de entrega: Fin de la Semana 3.
  • Instrumento de evaluación: file:///home/eliasdev/sistemas_paralelos/10-modulos/M1-fundamentos/rubrica-informe-comparativo.md.
  • Consigna de trabajo:
  • Seleccionar tres procesadores comerciales contemporáneos representativos:
  • Un procesador de servidor multinúcleo x86-64 (ej. Intel Xeon Scalable Emerald Rapids o AMD EPYC Genoa/Bergamo).
  • Un acelerador de cómputo vectorial masivo (ej. NVIDIA Hopper H100 o AMD Instinct MI300X).
  • Un procesador con arquitectura ARM orientado a HPC/Cloud (ej. Ampere Altra o AWS Graviton3).
  • Obtener y analizar sus datasheets técnicos oficiales (hojas de especificaciones del fabricante).
  • Elaborar una matriz comparativa identificando:
  • Clasificación bajo la Taxonomía de Flynn.
  • Número de núcleos físicos, hilos por núcleo y unidades vectoriales (SIMD / AVX-512 / Tensor Cores).
  • Ancho de banda teórico de memoria principal y tipos de memoria (DDR5 vs HBM3).
  • Topología interna de interconexión (Mesh, Ring, Infinity Fabric).
  • Redactar un informe técnico en PDF (máximo 5 páginas) discutiendo el impacto de la Ley de Moore y el Muro de Potencia (Power Wall) en cada una de las arquitecturas analizadas.

Actividad A3: Lectura formativa de literatura canónica

  • Lecturas recomendadas:
  • Hennessy & Patterson, Computer Architecture: A Quantitative Approach, 6ta edición, Capítulos 1 (Fundamentos cuantitativos) y 2 (Jerarquía de memoria).
  • Quinn, Parallel Programming in C with MPI and OpenMP, Capítulos 1 y 2.
  • Evidencia formativa: Participación activa en las sesiones de discusión y preparación para el Examen Sumativo de M1.
M1

Diagnóstico

Examen HTML autocontenido interactivo.

M1

Sumativo

Examen HTML autocontenido interactivo.