TEL-420 Sistemas Paralelos Rúbrica: Codigo openmp · M2
M2 Rúbrica de Evaluación Oficial
Descargar .md

Rúbrica · Evaluación de código fuente OpenMP — Módulo 2 (EC2)

Instrumento del programa: Evaluación de código fuente (rúbrica) (§18.2) Evidencia: Conjunto de programas OpenMP que implementan patrones de paralelización (§16) Elemento de competencia: EC2 · Módulo: M2 · Semanas: 4–5 · Ponderación: parte de EC2 (24 %)


1. Qué se entrega

Repositorio Git con la serie de cinco programas OpenMP de complejidad creciente que pide el apartado 20.2 del programa, más un documento que los describa.

N°ProgramaQué debe demostrar
1Suma de dos vectoresparallel for básico, sin datos compartidos escritos
2Búsqueda lineal con conteo de aparicionesreduction(+:contador)
3Reducción de máximoreduction(max:...) y comparación con atomic
4Aplicación de una función sobre una matrizcollapse, cuidado con la localidad de memoria
5Bucle con coste irregularElección razonada de schedule

Requisitos comunes a los cinco:

  1. Compilan sin errores con gcc -O2 -fopenmp -Wall.
  2. El resultado numérico coincide con la versión secuencial, verificado numéricamente.
  3. Verifican el número de hilos con omp_get_num_threads().
  4. Llevan la cabecera de identificación personal (glosario, apartado 4.1).
  5. Cada uno es ejecutable de forma independiente y acepta el tamaño por línea de órdenes.

2. Criterios de evaluación

#CriterioDescripción del desempeño esperadoPuntaje
1Corrección numéricaLos cinco programas producen exactamente el mismo resultado que la versión secuencial25
2Uso correcto de directivasparallel for bien aplicado; collapse solo cuando el bucle es paralelizable en bloque20
3SincronizaciónNinguna condición de carrera. reduction bien usado; atomic y critical solo cuando aportan20
4Ámbitos de variablesprivate, firstprivate, lastprivate y shared declarados de forma explícita donde hacen falta15
5Calidad del códigoLegible, comentado en los puntos críticos, sin variables globales ni memoria sin liberar10
6Protocolo de entregaRepositorio público, 3 o más commits con Conventional Commits, README con instrucciones10
Total100

3. Rúbrica analítica por niveles

CriterioDestacado (4)Competente (3)En proceso (2)No logrado (1)
1. CorrecciónLos 5 coinciden con la secuencia, con verificación numérica explícitaTodos coinciden; la verificación es informal1 o 2 programas con resultado distintoLa mayoría no coincide
2. DirectivasUsa la directiva más adecuada en cada caso y justifica el criterio de elecciónUsa directivas válidas, alguna suboptimalParaleliza de forma mecánica sin criterioDirectivas mal usadas o ausentes
3. SincronizaciónSin carreras; elige reduction sobre critical y explica por quéSin carreras; reduction correctamente aplicadoSin carreras pero con sincronización innecesariaPresenta condiciones de carrera
4. ÁmbitosDeclara los ámbitos de forma explícita y correcta en todos los casosCorrecto en la mayoría de los casosÁmbitos implícitos que funcionan por casualidadÁmbitos incorrectos
5. CalidadCódigo limpio, comentado donde importa, sin fugas ni estado globalLimpio con algún comentario de másConfuso o con fugas de memoriaIlegible o descuadrado
6. EntregaRepositorio limpio, commits significativos, README reproducibleRepositorio con los commits mínimosCommits múltiples pero sin convenciónSin repositorio

Cada criterio se convierte en puntos según el nivel: 4 = 100 %, 3 = 75 %, 2 = 50 %, 1 = 25 % del peso que tiene en la tabla 2.


4. Errores frecuentes y penalizaciones

ErrorPor qué importaPenalización
Compilar sin -fopenmpEl programa funciona pero no paraleliza, sin ningún aviso−15 puntos
Usar critical donde bastaba reductionSerializa el programa y contradice el objetivo del módulo−10 puntos
collapse sobre un bucle con dependencia internaResultado incorrecto o comportamiento no definido−15 puntos
Variable compartida no declaradaPuede funcionar en una ejecución y fallar en otra−10 puntos
No verificar el resultado frente a la versión secuencialImpide detectar errores−10 puntos
for fuera de una región parallelNo hace nada; el código aparenta paralelismo−15 puntos

5. Nota mínima

60 %. Un programa que no compile no se evalúa, y su nota es cero para ese entregable.


Instrumento derivado de 00-marco/programa-docente-TEL420-V2.docx, apartados 16, 18.2 y 18.3.