Desarrollo de aplicaciones con técnicas de programación paralela para el análisis del procesamiento 3D de imágenes de microscopía (2015)
La programación paralela, lleva bastante tiempo siendo desarrollada e implementada, sin embargo, en los últimos años ha crecido el interés debido a las limitaciones físicas que impiden el aumento de la frecuencia en los procesadores. La programación paralela nace para solucionar los problemas que requieren mucho tiempo de ejecución y grandes recursos informáticos. A través del uso simultáneo de procesadores se resuelven problemas de manera más rápida que lo que se puede realizar en un solo procesador. La programación paralela se basa en la división del problema en pequeñas partes para ser resueltos cada uno de estos en paralelo. El paralelismo ha sido utilizado con éxito en muchos campos como la informática de alto rendimiento, servidores, aceleradores gráficos, y muchos sistemas embebidos. El punto de inflexión multinúcleo, sin embargo, afecta a la totalidad del mercado, en particular el espacio del cliente, donde el paralelismo no ha sido previamente extendido. Los programas con millones de líneas de código debe ser convertido o reescrito para aprovechar el paralelismo, sin embargo, tal como se practica hoy en día, la programación en paralelo para el cliente es una tarea difícil, puesto que es realizada por pocos programadores. Los programas paralelos son notoriamente difíciles para poner a prueba, debido a los tipos de datos, intercalaciones no deterministas y modelos complejos de memoria. En el grupo de investigación de física aplicada y procesamiento de imágenes y señales de la Universidad Tecnológica se vienen desarrollando proyectos de inspección de muestras microscópicas metálicas que requieren el procesamiento de un gran volumen de datos. El procesamiento de estos datos se hace supremamente lento cuando se utilizan técnicas de programación secuenciales. Actualmente la Universidad Tecnológica de Bolívar no cuenta con una guía que permita probar, comparar y seleccionar la herramienta adecuada para desarrollar aplicaciones utilizando técnicas de programación paralela. Lo cual dificulta el trabajo de los grupos de investigación que trabajan en esta área del conocimiento en proyectos que requieren mejorar los tiempos de respuesta de sus aplicaciones.