Descripción general del proyecto - LFelipe06/act_integradora_TC3003B GitHub Wiki

Arquitectura del sistema

Este proyecto desarrolla un sistema distribuido para el procesamiento automatizado de imágenes en formato BMP, diseñado para ejecutarse sobre un clúster de computadoras interconectadas a través de una red local. La arquitectura del sistema sigue el modelo maestro-esclavo, en el cual una computadora actúa como nodo coordinador (master) y otras dos funcionan como nodos de ejecución (slaves). La infraestructura del clúster se apoya en servicios como NFS (para el sistema de archivos compartido) y SSH (para la ejecución remota sin contraseña), siguiendo la metodología recomendada por la comunidad de Ubuntu para la configuración de entornos con MPICH.

Funcionalidad del sistema

El objetivo funcional del sistema es aplicar transformaciones de imagen de forma masivamente paralela. Las operaciones implementadas incluyen conversión a escala de grises, reflejos horizontales y verticales tanto a color como en grises, y desenfoque basado en convolución con kernel de tamaño ajustable. Estas transformaciones, desarrolladas en lenguaje C, son altamente demandantes a nivel de procesamiento, por lo que se dividieron estratégicamente para ser ejecutadas en paralelo a través de múltiples hilos (OpenMP) y múltiples procesos distribuidos (MPI).

Flujo de procesamiento distribuido

El flujo de trabajo inicia con una interfaz gráfica desarrollada en Python utilizando PyQt5. El usuario selecciona una carpeta de imágenes, elige los efectos a aplicar, y define parámetros relevantes como el tamaño del kernel para desenfoque. Esta información se guarda en un archivo de configuración que es leído por el programa principal (tester.c), el cual divide la carga de trabajo y lanza procesos paralelos en los diferentes nodos del clúster.
Cada nodo procesa un subconjunto de las imágenes, y dentro de cada nodo, los hilos operan sobre secciones individuales de cada imagen, logrando así un procesamiento distribuido y altamente eficiente. Las imágenes resultantes se almacenan en un directorio común accesible desde todos los nodos, y se genera un archivo de log que registra métricas clave del rendimiento como el número estimado de instrucciones ejecutadas, el tiempo total de procesamiento, la tasa de bytes procesados por segundo y los MIPS alcanzados.

Valor educativo del sistema

Este sistema no sólo busca ser funcional y eficiente, sino también didáctico, permitiendo comprender en la práctica cómo se integran conceptos de computación paralela y distribuida en un entorno real, desde el nivel de red hasta la interfaz de usuario final.
⚠️ **GitHub.com Fallback** ⚠️