Tecnologías Utilizadas - LFelipe06/act_integradora_TC3003B GitHub Wiki
El sistema está construido a partir de una arquitectura modular y distribuida que combina herramientas de bajo nivel para procesamiento intensivo con tecnologías de red y paralelismo para ejecutar tareas de manera eficiente entre varios equipos. A continuación, se describen los componentes tecnológicos clave empleados en este proyecto:
Lenguaje y procesamiento
El procesamiento de imágenes se implementó en lenguaje C, debido a su eficiencia en la manipulación de memoria y estructuras de datos de bajo nivel. Esto resulta esencial al trabajar con imágenes en formato BMP, cuyo acceso a los datos de píxeles debe ser directo y rápido. Las transformaciones como conversión a escala de grises, reflejos horizontales y verticales, y desenfoques por convolución se implementaron directamente sobre los arreglos de píxeles.
Paralelismo Intra-nodo: OpenMP
Dentro de cada nodo del clúster, se utilizó la biblioteca OpenMP para aprovechar el paralelismo a nivel de hilos. Esto permite distribuir el trabajo de procesamiento de una imagen entre varios núcleos de la CPU local, reduciendo significativamente el tiempo requerido para aplicar cada transformación.
Paralelismo Inter-nodo: MPI
Para distribuir la carga de trabajo entre los diferentes equipos del clúster, se utilizó MPI (Message Passing Interface), específicamente la implementación MPICH. MPI permite coordinar la ejecución de procesos en paralelo sobre distintos nodos, intercambiando mensajes y sincronizando el procesamiento de imágenes. Cada nodo del clúster recibe una fracción de las imágenes a procesar.
Infraestructura de Red: NFS y SSH
El sistema opera sobre un entorno de red local en el que los tres nodos (un maestro y dos esclavos) comparten acceso a los archivos mediante un servidor NFS. Este permite montar una carpeta común en todos los nodos, asegurando que cada equipo pueda acceder a las imágenes de entrada y escribir sus resultados en un mismo destino. La ejecución remota de procesos se habilita mediante SSH, permitiendo que el nodo maestro lance y coordine los procesos en los nodos esclavos sin necesidad de intervención manual.
Formato de Imagen: BMP
Se eligió el formato BMP como estándar de entrada debido a su estructura sin compresión, que permite una lectura y escritura directa de los datos de imagen sin procesamiento adicional. Esto resulta especialmente útil en un entorno distribuido donde la eficiencia en el acceso a disco es crucial.
Interfaz Gráfica: PyQt5
La interacción con el sistema se facilita mediante una interfaz gráfica desarrollada en Python, usando el framework PyQt5. Esta GUI permite al usuario seleccionar la carpeta de imágenes, activar o desactivar efectos, definir parámetros como el tamaño del kernel de desenfoque, y visualizar en tiempo real el estado del procesamiento y sus métricas asociadas.