Usted está aquí: Inicio Ingeniería Informática Arquitectura de Computadores II Prácticas Reconocimiento paralelo de patrones en PThreads

Reconocimiento paralelo de patrones en PThreads

Acciones de Documento
  • Vista de contenidos
  • Marcadores (bookmarks)
  • Exportación de LTI
Autores: Javier García Blas, David Expósito Singh, Florin Isaila
El objetivo de la práctica será desarrollar un programa paralelo (haciendo uso de threads, en lugar de la biblioteca MPI).

Descripción

 

El objetivo de la práctica será desarrollar un programa paralelo (haciendo uso de threads, en lugar de la biblioteca MPI), que ejecute un patrón de reconocimiento de patrones. Para ello se aplicará una técnica de “fuerza bruta”: se recorrerá cada pixel de la imagen en busca de las figuras. Para ello, se dividirá la imagen en distintos cuadrantes, y de este modo, repartir la carga de trabajo entre todos los hilos.

La solución del problema se plantea de la siguiente forma:

  • Se crearán dos tipos de hilos (hilo maestro e hilo esclavo)
  • Sólo habrá un hilo maestro. Este hilo se encargará de cargar la imagen en memoria, calcular las coordenadas que procesará cada hilo esclavo y escribir el resultado en disco.
  • Habrá de 1 a n hilos esclavos. Estos hilos procesarán un área de la imagen dadas las correspondientes coordenadas.
  • Se deberá implementar una función barrier. El objetivo de dicha función será bloquear a los hilos esclavos, una vez se haya completado el procesamiento de la imagen, para que el hilo maestro escriba el resultado en disco.

El programa desarrollado tomará como argumentos los siguientes parámetros, y en el siguiente orden:

  1. El nombre de fichero que contiene la imagen.
  2. Número de hilos esclavos.
  3. Un número entero n (n=1,2) que indica que tipo de particionado se debe usar:
  4. Si n=1: cuadrantes con el mismo número de filas y columnas.
  5. Si n=2: cuadrantes dinámicos.
  6. El tamaño de grano en caso de ejecutar un particionado dinámico.
  7. Un fichero de salida en el que se escribirá los objetos reconocidos mediante el formato (x y), donde x e y son las coordenadas del centro de la figura.

De esta forma, la invocación al programa será:

 

./bmp_hilos <fichero_imagen_original> <num_hilos_esclavos> <tipo_particionado> <granoX> <granoY> <fichero_centros_salida>

 

Requisitos

 

Para aprobar la práctica es necesario cumplir los siguientes requisitos:

  • Todos los accesos de E/S deberán ser realizados únicamente por el hilo maestro, es decir, será el único hilo que podrá acceder a los ficheros o a la pantalla.
  • Se deberá usar la primitiva gettimeofday para la obtención de tiempos.
  • Se tomarán medidas de rendimiento sobre 1, 2, 4, y 8 hilos esclavos y 2 imágenes distintas: una con una distribución uniforme y otra con una distribución geométrica.
  • La solución implementada debe contener la función barrier explicada en el enunciado.
  • El speedup se calculará de dos formas distintas (speedup teórico y speedup real)
    1. Speedup teórico: Tiempo de cómputo / número de hilos esclavos
    2. Speedup real: Tiempo de cómputo obtenido en la práctica
  • El tiempo de acceso a los ficheros no se tendrá en cuenta a la hora de calcular el tiempo total de ejecución.

 

Entrega

 

El código será entregado mediante un único fichero llamado bmp_hilos.c (el enlace para entregar las prácticas será publicado brevemente).

La memoria tendrá que contener los siguientes apartados:

  • Descripción de la metodología de paralelización.
  • Gráficas con la medida de tiempos y mejora del rendimiento (speedup) con los distintos tipos de particionado y varios tamaños de grano.
  • Descomposición aproximada del tiempo total de ejecución.
  • Interpretación de las gráficas (muy importante).
  • Comparación entre los paradigmas de programación de paso de mensajes (práctica anterior) e hilos (esta práctica).
  • Conclusiones.

 

Normas

  • Las prácticas que no compilen o que no se ajusten a la funcionalidad, obtendrán una calificación de 0.
  • Un programa no comentado, obtendrá una calificación de 0.
  • Un programa que no se ajuste a los requisitos planteados, obtendrá una calificación de 0.

 

Reutilizar Curso
Descargar este curso