5.45.4.13 Evaluación (7 horas) [Habilidades AG-C09,AG-C11]

Referencias Bibliográficas: [Sterling et al., 2024,Pacheco and Malensek, 2021]

Temas

  1. Requisitos de seguridad (safety) y vivacidad (liveness) en términos de constructos de lógica temporal para expresar "siempre" y "eventualmente" Ver también: Fundamentos de los Lenguajes de Programación (FPL) -ParallelDistributedComputing.
  2. Identificar, probar y reparar violaciones, incluyendo formas comunes de errores como no garantizar el orden necesario (errores de carrera), atomicidad (incluyendo errores de "verificar luego actuar") y terminación (bloqueo activo).
  3. Métricas de requisitos de rendimiento para rendimiento (throughput), capacidad de respuesta, latencia, disponibilidad, consumo de energía, escalabilidad, uso de recursos, costos de comunicación, espera y control de velocidad, equidad; acuerdos de nivel de servicio. Ver también: Fundamentos de Sistemas (SF) -Performance.
  4. Impacto en el rendimiento de las opciones de diseño e implementación, incluyendo granularidad, sobrecarga, costos de consenso y consumo de energía. Ver también: Sociedad, ética y la Profesión (SEP) -Sustainability.
  5. Estimar limitaciones de escalabilidad, por ejemplo usando la Ley de Amdahl o la Ley de Escalabilidad Universal. Ver también: Fundamentos de Sistemas (SF) -Evaluation.

Aprendizaje esperado (Learning Outcomes)

  1. Revisar una especificación para habilitar el paralelismo y la distribución sin violar otras propiedades o características esenciales [Rediseñar]
  2. Explicar cómo las nociones concurrentes de seguridad (safety) y vivacidad (liveness) extienden sus contrapartes secuenciales [Explicar]
  3. Especificar un conjunto de invariantes que deben mantenerse en cada paso de cómputo de paralelismo masivo [Analizar]
  4. Escribir un programa de prueba que pueda revelar un error de carrera de datos; por ejemplo, perder una actualización cuando dos actividades intentan incrementar una variable [Escribir]
  5. En un contexto dado, explicar hasta qué punto se esperaría que introducir paralelismo en un programa por lo demás secuencial mejoraría el rendimiento (throughput) y/o reduciría la latencia, y cómo podría afectar la eficiencia energética [Explicar]
  6. Mostrar cómo cambian la escalabilidad y la eficiencia para problemas de muestra con y sin el supuesto de que el tamaño del problema cambia con el número de procesadores; además, explicar si y cómo cambiaría la escalabilidad bajo relajaciones de dependencias secuenciales [Diseñar]

Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM