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.
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 Slurmoutput_files
: ficheros de salida con nombreoutput_X.txt
, siendo X el número de procesos involucrados en dicha ejecución.images
: imágenes de salida con nombreoutput_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
.