5.45.4.7 Comunicación (8 horas) [Habilidades AG-C09,AG-C11]

Referencias Bibliográficas: [van Steen and Tanenbaum, 2023,Kleppmann, 2017a]

Temas

  1. Medios
    1. Variedades: canales (paso de mensajes o E/S), memoria compartida, heterogéneos, almacenes de datos.
    2. Dependencia de la disponibilidad y naturaleza del hardware subyacente, conectividad y protocolos; soporte del lenguaje, emulación. Ver también: Arquitectura y Organización (AR) -InterfacingCommunication.
  2. Canales
    1. Medios de comunicación de parte a parte explícitos (generalmente nombrados).
    2. APIs: Sockets, constructos arquitectónicos, basados en lenguaje y de kits de herramientas, como Message Passing Interface (MPI), y constructos en capas como Llamada a Procedimiento Remoto (RPC). Ver también: Redes y Comunicaciones (NC) -Fundamentals.
    3. APIs de canales de E/S.
  3. Memoria
    1. Arquitecturas de memoria compartida en las que las partes se comunican directamente solo con la memoria en direcciones dadas, con extensiones a memoria heterogénea que admite múltiples almacenes de memoria con transferencia de datos explícita entre ellos; por ejemplo, memoria local y compartida de GPU, Acceso Directo a Memoria (DMA).
    2. Jerarquías de memoria: Múltiples capas de dominios, alcances y cachés compartidos; localidad: latencia, falso uso compartido.
    3. Propiedades de consistencia: Límites de atomicidad a nivel de bits, coherencia, orden local.
  4. Almacenes de Datos
    1. Estructuras de datos mantenidas cooperativamente que implementan mapas y TADs relacionados.
    2. Variedades: Propiedad exclusiva, compartida, fragmentada, replicada, inmutable, versionada.

Aprendizaje esperado (Learning Outcomes)

  1. Explicar las similitudes y diferencias entre: (1) La parte A envía un mensaje en el canal X con contenido 1 recibido por la parte B (2) A establece la variable compartida X a 1, leída por B (3) A establece "X=1" en un mapa compartido distribuido al que accede B [Explicar]
  2. Escribir un programa que distribuya diferentes segmentos de un conjunto de datos a múltiples trabajadores y recoja los resultados (por ejemplo, sumar segmentos de un arreglo) [Escribir]
  3. Escribir un programa paralelo que solicite datos de múltiples sitios y los resuma usando alguna forma de reducción [Escribir]
  4. Comparar el rendimiento de versiones con y sin búfer de un programa productor-consumidor [Comparar]

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