Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
San Pedro, Montes de Oca

Prof. Jeisson Hidalgo-Céspedes
Prof. Josef Ruzicka-González

Recurso Peso Descripción

Carta al estudiante

 — 

Programa del curso y acuerdos. En aula virtual

Ejemplos | Iniciales

 — 

Ejemplos realizados durante las lecciones y soluciones iniciales

Material del curso

 — 

Material de referencia

Aula virtual

 — 

En Mediación Virtual

Ejercicios

20%

Ejercicios listados abajo

Quices

25%

Quices en papel durante las lecciones

Tareas

25%

5 tareas sobre simulación de calor

Proyecto

30%

Servidor web concurrente y distribuido

Los sábados son los días de revisión de ejercicios por parte de docentes y de asistentes, por lo que las asignaciones en la fila de Evaluaciones de cada semana deben estar listos a más tardar los viernes a la medianoche. El sábado el estudiantado inicia el trabajo extraclase de la semana siguiente. Durante la sesión extraclase el estudiantado revisa los videos, documenta los ejemplos, resuelve ejercicios y tareas en su repositorio personal de control de versiones.

1. Semana 01 [11ago, 15ago]

Extraclase

  1. Si no ha programado en C, seguir el Taller de C++ a C.

  2. Iniciar ejercicio [glossary] (0:20)

  3. Ver videos del meta-paradigma concurrente y definir los subparadigmas en el glosario. (2:30)

  4. Iniciar ejercicio [commented_examples]. (0:05)

  5. Ver Hola mundo con Pthreads y comentar ejemplo pthreads/hello. (1:45)

  6. Seguir videos de herramientas. (1:00)

  7. Resolver [recursive_hello] y aplicar la estructura de archivos, documentación, linting, análisis dinámico (Memcheck, Helgrind, ASan, TSan). (1:00)

  8. Trabajar en Tarea01 (3:20)

En clase

  1. [personal_repo]

  2. Encuesta de presentación

  3. Discutir la carta al estudiante

  4. [general_makefile]

  5. Ejemplo serial [pthreads/invert] (ver abajo)

Evaluación

  1. Creó repositorio personal privado con soluciones iniciales.

  2. Comentó ejemplo pthreads/hello.

  3. Resolvió ejercicio pthreads/recursive_hello.

El ejemplo programa inversor (invert) lee números enteros de la entrada estándar y los imprime en la salida estándar en el orden inverso. Su propósito es crear proyectos con el Makefile genérico. Se crea el proyecto en C, enunciado, casos de prueba, compilar, correr, probar, estilo de código (linting), y documentación (doxygen).

2. Semana 02 [18ago, 22ago]

Extraclase

  1. Ver Rastreo de memoria. (1:20)

  2. Resolver [recursive_hello_trace]. (1:00)

  3. Ver Indeterminismo y comentar ejemplo pthreads/hello_w. (2:15)

  4. Trabajar en Tarea01 (2:50)

En clase

  1. Recibido conforme de la carta al estudiante.

  2. Corregir y cerrar un issue con el mensaje de un commit.

  3. [grandma_lottery].

  4. Dudas y seguimiento de tarea01.

Evaluación

  1. Imagen del rastreo de memoria en pthreads/recursive_hello/trace/.

  2. Comentó pthreads/hello_w.

  3. Ejemplo de clase pthreads/grandma_lottery.

3. Semana 03 [25ago, 29ago]

Extraclase

  1. Ver Memoria privada y comentar pthreads/hello_iw_pri. (1:32)

  2. Ver Memoria compartida y comentar pthreads/hello_iw_shr. (0:20)

  3. Ver Espera activa y comentar pthreads/hello_order_busywait. (1:20)

En clase

  1. [team_shot_put].

  2. [team_shot_put_tec]: team_shot_put_stdc

  3. Actualizar la tabla en el readme del repositorio con los enlaces a ejemplos comentados, ejemplos de clase, ejercicios extraclase por tecnología (Pthreads, OpenMP, MPI, y Sincronización). Enlazar las tareas.

Evaluación

  1. Comentó pthreads/hello_iw_pri.

  2. Comentó pthreads/hello_iw_shr.

  3. Comentó pthreads/hello_order_busywait.

  4. Ejemplo de clase pthreads/team_shot_put.

  5. Ejemplo de clase pthreads/team_shot_put_stdc.

  6. Índice en readme del repositorio.

  7. Entrega de Tarea01 (límite s30ago)

4. Semana 04 [01set, 05set]

Extraclase

  1. Ver Condición de carrera y exclusión mutua y comentar pthreads/race_position. (1:50)

  2. Ver Semáforos y comentar ejemplo pthreads/hello_order_semaphor. (1:43)

  3. Resolver [birthday_pinata]. (1:00)

  4. Ver Seguridad condicional y comentar ejemplo pthreads/hello_order_cond_safe. (0:47)

  5. Revisar tarea01 con asistente (0:20).

  6. Diseñar solución de tarea02 y discutirla con docente (4:00).

En clase

  1. [team_shot_put_tec]: pthreads/team_shot_put_stdcpp, pthreads/team_shot_put_ethr.

  2. [delayed_busy_wait] en equipos de 3.

  3. [sem_vs_condsafe] en equipos de 3 en pthreads/delayed_busy_wait.

  4. Dudas y seguimiento del diseño de la tarea02.

Evaluación

  1. Comentó pthreads/race_position.

  2. Comentó pthreads/hello_order_semaphor.

  3. Comentó pthreads/hello_order_cond_safe.

  4. Resolvió ejercicio pthreads/birthday_pinata.

  5. Ejemplos de clase pthreads/team_shot_put_stdcpp, pthreads/team_shot_put_ethr.

  6. Ejemplo de clase pthreads/delayed_busy_wait junto con sem_vs_condsafe.

5. Semana 05 [08set, 12set]

Extraclase

  1. Ver Problema de buffer acotado y comentar pthreads/prod_cons_bound. (1:30)

  2. Ver Problema de buffer no acotado y comentar pthreads/prod_cons_unbound. (3:40)

  3. Ver Patrón productor-consumidor. (1:40)

  4. Implementar la tarea02 (2:30).

En clase

  1. [building_tasks].

  2. [network_simul_packet_loss]

  3. Crear equipo y analizar proyecto 1.1.

  4. Implementación y seguimiento de la tarea02.

Evaluación

  1. Comentó pthreads/prod_cons_bound.

  2. Comentó pthreads/prod_cons_unbound.

  3. Ejemplo de clase pthreads/building_tasks.

  4. Ejemplo de clase taskc/network_simul_packet_loss.

  5. Entregó Tarea02 (límite s13set)

6. Semana 06 [15set, 19set]

Extraclase

  1. Ver Servidor web concurrente (proyecto 1) y trabajar en documento de análisis. (1:32)

  2. Ver Optimización. (0:15)

  3. Ver Descomposición y definirla en el glosario (0:22)

  4. Ver Mapeo y definirlo en el glosario (1:00)

  5. Ver Métricas y definir Incremento de velocidad y Eficiencia en el glosario. (1:00)

  6. Diseñar solución de proyecto 1.1: diagrama de flujo de datos (3:45).

En clase

  1. [network_simul_packet_loss_fix].

  2. [network_simul_packet_loss2].

  3. Crear repositorio para proyecto con archivos iniciales del servidor web sin la simulación de red.

Evaluación
m30abr

  1. Ejemplo de clase taskc/network_simul_packet_loss_fix.

  2. Ejemplo de clase taskc/network_simul_packet_loss2.

7. Semana 07 [22set, 26set]

Extraclase

  1. Ver Ley de Amdahl. (0:34)

  2. Ver Profiling. (0:40)

  3. Ver Clústers de computadoras. (0:28)

  4. Ver Falso compartido. (0:54)

En clase

  1. [network_simul_producers].

  2. [network_simul_producers_atomic].

  3. [network_simul_bounded].

  4. Resolver amdahl_compare_ab.

  5. Diseñar, implementar avance 1.1. Consultas y pre-revisión con docente.

Evaluación

  1. Ejemplo de clase taskc/network_simul_producers.

  2. Ejemplo de clase taskc/network_simul_producers_atomic.

  3. Ejemplo de clase taskc/network_simul_bounded.

  4. Resolvió ejercicio amdahl_compare_ab en aula virtual y hoja de cálculo en control de versiones.

  5. Pre-revisiones de implementación proyecto 1.1 (opcional).

  6. Proyecto 1.1 (5:14) (límite s27set).

8. Semana 08 [29set, 03oct]

Extraclase

  1. [opcional] Ver Primitivas de concurrencia de tareas. {0:00 a 1:33}

  2. [opcional] Ver Patrones básicos y definir Barrera en el glosario. {0:00 a 4:14}

  3. Trabajar en tarea03 {2:00 a 6:50}.

En clase

  1. Diseñar soluciones en pseudocódigo para los ejemplos de Patrones básicos.

Evaluación

  1. Ejemplos de clase taskc/taskc_patterns.

  2. Revisión de proyecto 1.1 (1:00).

9. Semana 09 [06oct, 10oct]

Extraclase

  1. [opcional] Ver OpenMP. {0:00 a 4:12}

  2. Resolver Tarea03 {3:20 a 7:50}.

En clase

  1. Resolver [omp_team].

  2. Resolver [omp_for].

  3. Resolver [omp_several_for_stages].

Evaluación

  1. Ejemplo de clases openmp/omp_team.

  2. Ejemplo de clases openmp/omp_for.

  3. Ejemplo de clases openmp/omp_several_for_stages.

  4. Entregó Tarea03 (límite s11oct)

10. Semana 10 [13oct, 17oct]

Extraclase

  1. Revisar Tarea03 (0:30)

  2. Analizar y diseñar proyecto 1.2 (7:50)

En clase

  1. Resolver [omp_stats].

  2. Concepto de distribución y clúster de computadoras. Reseña de MPI.

  3. Correr [mpi_hello] en clúster, guardar salida.

Evaluación

  1. Ejemplo de clase openmp/omp_stats.

  2. Ejemplo de clase mpi/mpi_hello.

11. Semana 11 [20oct, 24oct]

Extraclase

  1. Implementar proyecto 1.2

En clase

  1. Pre-revisar avance 1.2

Evaluación

12. Semana 12 [27oct, 31oct]

Extraclase

  1. Resolver Tarea04

  2. Resolver [mpi_send_recv_ord_sem]. Agregar caso de prueba para 3 procesos.

  3. Resolver [mpi_send_recv_ord_itm]. Agregar caso de prueba para 3 procesos.

  4. Resolver [mpi_send_recv_urd].

  5. Resolver [mpi_hybrid_distr_arg].

En clase

  1. Pre-revisar diseño avance 1.2 (virtual sincrónico con cita)

Evaluación

  1. Ejemplo comentado mpi/mpi_send_recv_ord_sem.

  2. Ejemplo comentado mpi/mpi_send_recv_ord_itm.

  3. Ejemplo comentado mpi/mpi_send_recv_urd.

  4. Ejemplo comentado mpi/mpi_hybrid_distr_arg.

  5. Proyecto 1.2 (límite s01nov).

13. Semana 13 [03nov, 07nov]

Extraclase

  1. Resolver [mpi_relay_race].

  2. Resolver [mpi_lucky_number_reduce].

  3. Resolver [mpi_lucky_number_who].

  4. Resolver Tarea04

En clase

  1. Resolver [omp_mergesort].

  2. Paralelizar la mediana con mergesort en [omp_stats].

  3. Obtener [mpi_wrapper] y correr saludo en clúster.

  4. Resolver [mpi_hybrid_distr_stdin].

  5. Resolver [ping_pong_perfect]

  6. Resolver [mpi_hybrid_distr_bcast].

  7. Resolver [mpi_distr_bingo]?

Evaluación

  1. Ejemplo comentado mpi/mpi_relay_race.

  2. Ejemplo comentado mpi/mpi_lucky_number_reduce.

  3. Ejemplo comentado mpi/mpi_lucky_number_who.

  4. Ejemplo de clase openmp/omp_mergesort.

  5. Ejemplo de clase mpi/mpi_wrapper.

  6. Ejemplo de clase mpi/mpi_hybrid_distr_stdin

  7. Ejemplo de clase mpi/mpi_ping_pong.

  8. Ejemplo de clase mpi/mpi_hybrid_distr_bcast.

  9. Ejemplo de clase mpi/mpi_distr_bingo?

  10. Entregó Tarea04 (límite s08nov)

14. Semana 14 [10nov, 14nov]

Extraclase

  1. Revisar Tarea04 (0:30)

  2. Resolver Tarea05

En clase

  1. Resolver [mist_cond_var].

  2. Resolver [dining_philosophers].

  3. Resolver [readers_writers] y [readers_writers_rwlock].

  4. Resolver [reentrant_rand].

Evaluación

  1. Ejemplo de clase pthreads/mist_cond_var.

  2. Ejemplo de clase taskc/dining_philosophers.

  3. Ejemplo de clase pthreads/readers_writers.

  4. Ejemplo de clase pthreads/reentrant_rand.

15. Semana 15 [17nov, 21nov]

Extraclase

  1. Resolver Tarea05

En clase

  1. Diseñar solución a [build_h2o].

  2. Diseñar solución a la secuencia [dancing_pairs_1] a [dancing_pairs_5] en taskc/dancing_pairs.

  3. (Aceleración por hardware 1)

Evaluación

  1. Ejemplo de clase taskc/build_h2o.

  2. Ejemplo de clase taskc/dancing_pairs.

  3. Entregó Tarea05 (límite s22nov).

16. Semana 16 [24nov, 28nov]

Extraclase

  1. Analizar proyecto 1.3

  2. Diseño de solución a proyecto 1.3

En clase

  1. (Aceleración por hardware 2)

Evaluación

17. Semana 17 [01dic, 05dic]

Extraclase

  1. Implementar solución a proyecto 1.3

  2. Revisar proyecto 1.3

En clase

-

Evaluación

  1. Entrega proyecto 1.3 (s06dic)

Material de referencia

Taller de C++ a C