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. Daniel Alvarado González

Recurso Peso Descripción

Carta al estudiante (en aula virtual)

 — 

Programa del curso y acuerdos

Ejemplos: Gr01 Gr03 Iniciales

 — 

Ejemplos realizados durante las lecciones y soluciones iniciales

Material del curso

 — 

Material de referencia

Aula virtual

 — 

En Mediación Virtual

Ejercicios y quices

25%

Ejercicios listados abajo. Quices durante las lecciones

Tareas

25%

Simulación de calor

Proyecto01

30%

Servidor web concurrente y distribuido

Proyecto02

20%

Simulación de n cuerpos (incremento del desempeño)

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 [10mar, 15mar[

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
m19mar

  1. Creó repositorio personal privado con .gitignore y common/Makefile.

  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 [17mar, 22mar[

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 [24mar, 29mar[

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. [create_thread_team].

  3. Hacer una tabla en el readme del repositorio que enlace ejemplos comentados, ejemplos de clase, ejercicios extraclase por tecnología (Pthreads, OpenMP, MPI, y Sincronización). Enlazar las tareas.

Evaluación
m02abr

  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/create_thread_team.

  6. Índice en readme del repositorio.

  7. Entrega de Tarea01 (límite s29mar)

4. Semana 04 [31mar, 05abr[

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. [delayed_busy_wait] en equipos de 3.

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

  3. [building_tasks].

  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. Ejemplo de clase pthreads/delayed_busy_wait junto con pthreads/delayed_busy_wait.

  6. Ejemplo de clase pthreads/building_tasks.

5. Semana 05 [07abr, 12abr[

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. [network_simul_packet_loss] Solución en pseudocódigo de productor-consumidor de buffer acotado y no acotado.Comprender código reutilizable. Modificar simulación para introducir pérdida de paquetes.

  2. Crear equipo y analizar proyecto 1.1.

  3. 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 taskc/network_simul_packet_loss.

  4. Entregó Tarea02 (límite s12abr)

6. Semana 06 [21abr, 26abr[ (Semana U)

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 (3:45).

En clase

  1. [network_simul_packet_loss2].

  2. [network_simul_producers].

  3. [network_simul_bounded].

  4. Diseño diagrama de flujo de datos del proyecto 1.1.

Evaluación
m30abr

  1. Ejemplo de clase taskc/network_simul_packet_loss2.

  2. Ejemplo de clase taskc/network_simul_producers.

  3. Ejemplo de clase taskc/network_simul_bounded.

  4. Repositorio para proyectos, archivos iniciales del servidor web (sin la simulación de red), documento de análisis.

  5. Visto bueno de docente de diseño de flujo de datos del proyecto 1.1.

7. Semana 07 [28abr, 04may[

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. Resolver amdahl_compare_ab.

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

Evaluación

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

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

  3. Proyecto 1.1 (5:14) (límite s03abr).

8. Semana 08 [05may, 10may[

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 [12may, 17may[

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].

  4. Resolver [omp_stats].

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. Ejemplo de clases openmp/omp_stats.

  5. Entregó Tarea03 (límite s17may)

10. Semana 10 [19may, 24may[

Extraclase

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

  2. Revisar Tarea03 (0:30)

En clase

  1. Resolver [omp_mergesort].

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

  3. Definir el concepto de distribución y clúster de computadoras, en glosario.

  4. Docente provee una reseña de MPI.

Evaluación

  1. Ejemplo de clase openmp/omp_mergesort.

  2. Ejemplo de clase openmp/omp_stats.

11. Semana 11 [26may, 31may[

Extraclase

  1. Implementar avance 1.2

En clase

  1. Correr [mpi_hello] en Poás, guardar salida.

  2. Resolver [mpi_wrapper] y correr saludo en Poás.

  3. Pre-revisar diseño avance 1.2

Evaluación

  1. Ejemplo de clase mpi/mpi_hello.

  2. Ejemplo de clase mpi/mpi_wrapper.

  3. Proyecto 1.2 (límite s31may).

12. Semana 12 [02jun, 07jun[

Extraclase

  1. Resolver Tarea04

En clase

  1. Resolver [hybrid_distr_arg].

  2. Resolver [mpi_error] en mpi_wrapper.

  3. Resolver [hybrid_distr_stdin].

  4. Resolver [mpi_wrapper_send_recv] en examples/mpi_wrapper. Aplicarlo a examples/hybrid_distr_stdin.

  5. Resolver [mpi_wrapper_send_recv_arr] en examples/mpi_wrapper. Aplicarlo a examples/hybrid_distr_stdin.

Evaluación

  1. Ejemplo de clase mpi/mpi_wrapper con la subclase Mpi::Error y comunicación punto a punto genérica.

  2. Ejemplo de clase mpi/hybrid_distr_arg.

  3. Ejemplo de clase mpi/hybrid_distr_stdin con MPI Wrapper.

13. Semana 13 [09jun, 14jun[

Extraclase

  1. Resolver Tarea04

  2. Analizar y diseñar proyecto 1.3

En clase

  1. Resolver [send_recv_ord_sem].

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

  3. Resolver [send_recv_urd].

  4. [opcional] Resolver [mpi_wrapper_stream_op] en mpi/mpi_wrapper. Aplicarlo a mpi/send_recv_ord_itm.

  5. Resolver [ping_pong_perfect] y [ping_pong_realistic] en mpi/ping_pong.

Evaluación

  1. Ejemplo de clase mpi/send_recv_ord_sem.

  2. Ejemplo de clase mpi/send_recv_ord_itm, sus casos de prueba, y seguridad condicional.

  3. [si se hizo] Ejemplo de clase mpi_wrapper_stream_op en mpi/mpi_wrapper.

  4. Ejemplo de clase mpi/ping_pong.

  5. Ejemplo de clase mpi/mpi_relay_race.

  6. Entregó Tarea04 (límite s14jun)

14. Semana 14 [16jun, 21jun[

Extraclase

  1. Implementar solución a proyecto 1.3

  2. Análisis del proyecto 2

  3. Revisar Tarea04 (0:30)

En clase

  1. Presentación de proyecto 2 (docente toma rol de cliente/usuario)

  2. Resolver [relay_race_dist].

  3. Resolver [hybrid_distr_bcast].

Evaluación

  1. Documento de análisis (readme.adoc) de Proyecto02.

  2. Ejemplo de clase mpi/mpi_relay_race.

  3. Ejemplo de clase mpi/mpi_hybrid_distr_bcast.

15. Semana 15 [23jun, 28jun[

Extraclase

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

En clase

  1. Resolver [lucky_number_reduce].

  2. Resolver [lucky_number_who].

  3. Resolver [mist_cond_var].

  4. Resolver [dining_philosophers].

Evaluación

  1. Ejemplo de clase mpi/lucky_number_reduce.

  2. Ejemplo de clase mpi/mpi_lucky_number_who.

  3. Ejemplo de clase mpi/mist_cond_var.

  4. Ejemplo de clase taskc/dining_philosophers.

  5. Proyecto 1.3 (límite s28jun)

16. Semana 16 [30jun, 05jul[

Extraclase

  1. Implementación proyecto 2

  2. Revisar proyecto 1.3

En clase

  1. Resolver [readers_writers].

  2. Resolver [readers_writers_rwlock].

  3. Resolver [reentrant_rand].

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

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

Evaluación

  1. Ejemplo de clase pthreads/readers_writers en pseudocódigo y Pthreads con candados de lectura y escritura.

  2. Ejemplo de clase pthreads/reentrant_rand.

  3. Ejemplo de clase taskc/build_h2o.

  4. Ejemplo de clase taskc/dancing_pairs.

17. Semana 17 [07jul, 12jul[

Extraclase

  1. Revisar proyecto 2 [j10jul, v11jul]

En clase

-

Evaluación

  1. Entrega proyecto 2 (m09jul)

Material de referencia

Taller de C++ a C