Skip to content

Implementación y estudio de un programa con MPI que realiza la convolución de una imagen de niveles de gris con un kernel 3x3 de forma paralela.

License

Notifications You must be signed in to change notification settings

nicovp10/ConvolucionParalela

Repository files navigation

Paralelización de una convolución de una imagen de niveles de gris

Introducción

Este estudio ha sido realizado para aprender de forma didáctica como de escalable es la paralelización de una convolución de una imagen de niveles de gris. Se ha analizado la escalabilidad en función del número de procesos involucrados y del tamaño de los bloques de columnas en los que se ha dividido la imagen para su paralelización.

El repositorio está formado por una carpeta de imágenes, dónde se guardarán las imágenes resultantes de la ejecución así como está la imagen de entrada predeterminada, el código en C del programa, los ficheros asociados a la librería stb para manejo de imágenes, un par de scripts en Bash para ayudar a la ejecución con MPI, un script en Python para graficar los valores de análisis obtenidos, y el informe asociado al estudio completo.

Ejecución

NOTA 1: los scripts en Bash están adaptados a la ejecución del código en el supercomputador Finisterrae III del Centro de Supercomputación de Galicia, por lo que no se asegura su correcto funcionamiento en otros sistemas.

NOTA 2: el programa está pensado para imágenes de entrada en formato JPG, por lo que no se asegura su correcto funcionamiento con imágenes en otros formatos.

Para ejecutar el programa se clonará o descargará este repositorio, insertando todos los archivos en un mismo directorio. A continuación se ejecutará el script global_execution.sh. Los resultados de la ejecución se podrán ver en:

  • slurm_files: ficheros Slurm
  • output_files: ficheros de salida con nombre output_X.txt, siendo X el número de procesos involucrados en dicha ejecución.
  • images: imágenes de salida con nombre output_Y_X.jpg, siendo Y el número de columnas que tiene cada bloque y X el número de procesos involucrados en dicha ejecución.

Si se desea utilizar otra imagen de entrada, se deberá añadir un nuevo parámetro de entrada a la llamada a ejecución del programa en la línea 27 del script single_execution.sh, o bien modificar la línea 54 del código fuente, indicando la ruta de la imagen en ambos casos.

Si se desea graficar los resultados, se ejecutará el script plots.py una vez finalizada completamente la ejecución. Los gráficos resultantes se guardarán en la carpeta plots.

About

Implementación y estudio de un programa con MPI que realiza la convolución de una imagen de niveles de gris con un kernel 3x3 de forma paralela.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published