TEL-420 Sistemas Paralelos Actividades Autónomas M2 · M2
M2 Actividades de Aprendizaje Autónomo
Descargar .md

Actividades de Aprendizaje Autónomo — Módulo 2 (EC2)

Asignatura: TEL-420 · Sistemas Paralelos Módulo 2: Programación Paralela en Memoria Compartida (OpenMP) Docente: Ing. Elias Cassal Baldiviezo Horas de dedicación autónoma: 8 horas Semanas de ejecución: 4 a 6


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

Conforme al apartado 20.2 del Programa Docente del Proyecto Formativo, las actividades autónomas del módulo 2 consolidan el aprendizaje procedimental de la programación concurrente en C con directivas OpenMP, garantizando que el estudiante adquiera destreza en la detección y prevención de patologías de paralelismo (condiciones de carrera, contención y falsa compartición de caché).


2. Bloque de Actividades Autónomas Obligatorias

Actividad A1: Desarrollo de la serie de 5 programas OpenMP de complejidad creciente

  • Momento de entrega: Fin de la Semana 5.
  • Instrumento de evaluación: file:///home/eliasdev/sistemas_paralelos/10-modulos/M2-openmp-memoria-compartida/rubrica-codigo-openmp.md (45% de EC2).
  • Consigna de trabajo:
  • Implementar en un repositorio Git local los cinco programas progresivos:
  • Programa 1: Suma de vectores paralela básica sin dependencias (parallel for).
  • Programa 2: Búsqueda lineal con reducción de contador (reduction(+:contador)).
  • Programa 3: Reducción de valor extremo y comparación con operaciones atómicas (atomic).
  • Programa 4: Transformación matricial con bucles anidados evaluando collapse(2) y localidad espacial.
  • Programa 5: Bucle con coste computacional irregular (carga no homogénea) contrastando las políticas schedule(static), schedule(dynamic) y schedule(guided).
  • Verificar numéricamente en cada programa que el resultado paralelo coincida con el secuencial.
  • Aplicar buenas prácticas de Git (commits atómicos y mensajes con formato convencional).

Actividad A2: Análisis de falsa compartición (False Sharing) e informe de optimización

  • Momento de entrega: Fin de la Semana 6.
  • Instrumento de evaluación: file:///home/eliasdev/sistemas_paralelos/10-modulos/M2-openmp-memoria-compartida/rubrica-informe-optimizacion.md (35% de EC2).
  • Consigna de trabajo:
  • Diseñar un experimento en C donde múltiples hilos escriban simultáneamente en posiciones adyacentes de un mismo arreglo dentro de una misma línea de caché (64 bytes).
  • Implementar la solución mediante alineamiento de memoria (alignas(64) / variables locales privadas en pila acumuladas al final con reduction).
  • Medir el tiempo de ejecución con omp_get_wtime() variando los hilos de 1 a 16.
  • Redactar el informe técnico en PDF explicando por qué el protocolo de coherencia de caché (MESI/MOESI) invalida las líneas y causa degradación masiva.

Actividad A3: Pruebas de rendimiento y perfilado (Profiling) con herramientas del sistema

  • Momento de entrega: Fin de la Semana 6.
  • Instrumento de evaluación: file:///home/eliasdev/sistemas_paralelos/10-modulos/M2-openmp-memoria-compartida/rubrica-pruebas-rendimiento.md (20% de EC2).
  • Consigna de trabajo:
  • Ejecutar las herramientas de perfilado perf o gprof sobre las implementaciones de referencia en 40-codigo/referencia/.
  • Analizar fallos de caché de nivel 1 y último nivel (LLC-misses) y cambios de contexto.
  • Documentar las mediciones y generar curvas de Speedup y Eficiencia.