Prototipo de un ambiente de programación paralelo para la construcción de autómatas celulares de propósito general (2017)
La programación en paralelo es una rama de la computación de alto rendimiento HPC (siglas en inglés), que se ha proliferado en los últimos años con más fuerza en el ámbito científico, esta rama nace como un paradigma de programación ajustada a las nuevas arquitecturas de computadores paralelos (PCs, Supercomputadores, Estaciones de Trabajo, etc). Dada las nuevas características en los computadores y la creciente complejidad de los problemas tratados en el mundo científico, la programación en paralelo ha tomado un lugar significativo en el escalafón de alternativas para la solución de problemas. El estudio de sistemas dinámicos como los fluidos, el clima, los gases, entre otros, ha permitido a través de la historia la observación y descubrimiento de gran variedad de fenómenos físicos. Entre los variados métodos existentes para llevar a cabo estas observaciones se encuentra el método de Autómata Celular. Este método en particular, permite observar el comportamiento del sistema, y en muchos casos encontrar la solución numérica a la ecuación diferencial que gobierna el comportamiento del mismo. Si bien es cierto, este tipo de sistemas en el campo de la física son modelados normalmente bajo el paradigma de programación secuencial, lo cual, es contradictorio siendo que los modelos de Autómata Celular pueden tomar ventaja del poder computacional disponible en computadores paralelos actuales. Es por ello que el presente trabajo de investigación se enfocó en el desarrollo de una herramienta que permitiera a dichos modelos de autómata celular, tomar provecho del paralelismo presente en computadores paralelos. Además como producto del proceso de investigación en el ámbito de autómatas celulares, surge un modelo de cambio climático para interpolación de temperaturas en el Valle del Cauca, descrito en la Sección 2.5. En este orden de ideas, el Capítulo 1 describe el contexto bajo el cual se plantea la iniciativa de implementar un ambiente de programación para la construcción de autómatas celulares de propósito general; El Capítulo 2, comprende lo que es el surgimiento de los autómatas celulares, descripción de sus características, clasificación, propiedades y aplicaciones. El Capítulo 3 describe la evolución en la arquitectura de computadores, desde el diseño básico de von Neumann hasta sus mejoras, dándole la bienvenida a las arquitecturas multiprocesador y multinúcleo. As mismo se describe como las unidades de procesamiento de gráficos pasan de ser únicamente procesadores de gráficos a realizar cómputo de propósito general. Además, se describen las técnicas (modelos y patrones de programación paralela) que permiten acceder al poder computacional disponible en las arquitecturas anteriormente mencionadas. Capítulo 4, describe el ambiente de programación y como este aplica las técnicas de programación en paralelo para optimizar la ejecución de modelos de autómata celular de propósito general. En el Capítulo 5, se hace la validación del prototipo, llevando a cabo pruebas en tiempo de ejecución y utilización de recursos del código generado por el prototipo de ambiente de programación. Finalmente el presente documento concluye en el Capítulo 6, donde se discuten los resultados obtenidos en las pruebas llevadas a cabo en el capítulo anterior, finalizando con la discusión del trabajo futuro.