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

Rúbrica · Evaluación de Código Fuente MPI — Módulo 3 (EC3)

Instrumento del programa: Evaluación de código MPI (rúbrica) (§18.2) Evidencia: Aplicaciones MPI punto a punto y colectiva (§16) Elemento de competencia: EC3 · Módulo: M3 · Semanas: 7–8 · Ponderación: 40 % de EC3 (11.2 % de la asignatura)


1. Qué se entrega

Repositorio Git con un conjunto de programas MPI en C que demuestran el dominio de la comunicación en memoria distribuida, acompañados de un README.md con instrucciones de compilación y ejecución mediante mpirun:

N°ProgramaRequisitos técnicos clave
1Comunicación en anillo (token passing)Paso de mensajes punto a punto bloqueante (MPI_Send / MPI_Recv), cierre cíclico de anillo sin interbloqueos.
2Anillo no bloqueante con solapamientoUso de MPI_Isend e MPI_Irecv con MPI_Wait, solapando cómputo aritmético local durante la transmisión.
3Monte Carlo / Pi distribuidoUso de MPI_Bcast para parámetros y MPI_Reduce (MPI_SUM) para agregación; semillas aleatorias disjuntas por rango.
4Multiplicación de matrices distribuidaParticionamiento de filas de matriz con MPI_Scatter, difusión de la matriz completa con MPI_Bcast, y recolección de resultados con MPI_Gather.

Requisitos comunes obligatorios:

  1. Compilan sin advertencias con mpicc -O2 -Wall.
  2. Verifican matemáticamente la coincidencia del resultado frente a una versión secuencial de referencia (T_1).
  3. Manejan adecuadamente cualquier número de procesos [p \ge 2].
  4. Liberan recursos y buffers antes de invocar MPI_Finalize().
  5. Incluyen cabecera de autoría con datos del estudiante y fecha.

2. Criterios de evaluación (100 puntos)

#CriterioDescripción del desempeño esperadoPuntaje
1Corrección matemática y consistenciaCoincidencia numérica exacta con la solución secuencial para diversos tamaños de problema.25
2Uso de primitivas punto a puntoSelección justificada entre bloqueante y no bloqueante; prevención total de condiciones de deadlock.20
3Eficiencia en comunicaciones colectivasUso correcto de Bcast, Scatter, Gather y Reduce en lugar de cadenas ineficientes de envíos individuales.20
4Particionamiento y balance de cargaDistribución equitativa de datos entre los procesos, gestionando restos de división ([N \pmod p]).15
5Modularidad y calidad de códigoCódigo estructurado, libre de fugas de memoria, con medición rigurosa usando MPI_Wtime().10
6Protocolo de entrega y reproducibilidadRepositorio estructurado, historial de commits con estándar convencional y Makefile o script de compilación.10
Total100

3. Rúbrica analítica por niveles

CriterioDestacado (4)Competente (3)En proceso (2)No logrado (1)
1. CorrecciónTodos los programas coinciden exactamente con la versión secuencial con verificación automáticaCoinciden en su totalidad; verificación manual o informalDiscrepancias numéricas en casos borde o con p imparResultados erróneos o cálculo no convergente
2. Punto a puntoImplementación impecable; demuestra solapamiento efectivo con MPI_Isend/Irecv sin deadlocksComunicaciones correctas sin bloqueos; solapamiento básicoFunciona pero presenta riesgo latente de deadlock en mensajes grandesCódigo se bloquea por interbloqueo (deadlock)
3. ColectivasUso óptimo de operaciones colectivas con tipos de datos adecuados y árbol logarítmico aprovechadoColectivas bien empleadas con detalles menores en tipos o buffersReemplaza colectivas por bucles secuenciales de MPI_SendInvocación incorrecta que congela la ejecución
4. ParticiónParticionamiento generalizado que soporta tamaños no múltiplos de p (Scatterv/Gatherv)Particionamiento correcto asumiendo que N es múltiplo de pPartición desbalanceada que sobrecarga al rango 0Partición errónea con pérdida o solapamiento de datos
5. CalidadCódigo modular, limpio, excelente documentación y uso preciso de MPI_WtimeCódigo ordenado y legible con comentarios suficientesCódigo desordenado, sin liberación de recursos o variables globalesCódigo ilegible, sin estructurar ni medir tiempos
6. EntregaRepositorio impecable, script automatizado de compilación y prueba reproducibleRepositorio ordenado con instrucciones claras de ejecuciónRepositorio incompleto o pasos manuales engorrososEntrega fuera de formato o sin instrucciones