Explotación de los sistemas multi-núcleo para la simulación paralela de eventos discretos con Java : ejemplo de aplicación en un modelo orientado al proceso de un centro hospitalario
Author
Castilla Rodríguez, Iván![ULL authority ULL authority](/xmlui/themes/Mirage2/images/autoridades/autoridad.png)
Date
2012Abstract
Los gestores de las organizaciones de servicios se encuentran ante un entorno cambiante y una creciente demanda de innovación que requieren del uso de herramientas sofisticadas que les ayuden en sus procesos de toma de decisiones. Una de estas herramientas es la simulación de procesos de negocio. Desafortunadamente, a medida que el tamaño y nivel de detalle de los modelos de las organizaciones se incrementan, de la misma manera se incrementa el tiempo de ejecución de la simulación de estos modelos. Con la irrupción de los procesadores multi-núcleo en el mercado doméstico, se ha creado una alternativa económica y de fácil acceso para reducir el tiempo de ejecución de estos problemas mediante la aplicación del paralelismo.
Tres conceptos definen los principales objetivos de esta tesis: generalidad, en el sentido de que se desea obtener un entorno de modelado y simulación genérico para los procesos de negocio de cualquier empresa; automatización, en referencia a que la citada simulación debe poder ejecutarse en paralelo sin la intervención del usuario; y eficiencia, dirigida a mejorar los tiempos de ejecución de la simulación secuencial mediante el paralelismo.
Para cumplir el objetivo de generalidad se ha diseñado una arquitectura de modelado y simulación para procesos de negocio en Java, basada en conceptos de modelado con patrones de flujos de trabajo y estructuras de alto nivel adaptadas al lenguaje empresarial. La simulación de estos modelos se ha planteado mediante la simulación de eventos discretos orientada al proceso.
Una vez disponible un entorno de modelado y simulación genérico para procesos de negocio, se ha procedido a la implantación de técnicas para su paralelización automatizada. Para ello, se ha desarrollado un algoritmo basado en una lista centralizada de eventos con ejecución distribuida, adaptado a través del paradigma maestro-esclavo. Al algoritmo original se le han aplicado múltiples optimizaciones, incluyendo el aprovechamiento de la localidad de los eventos, el envío de eventos en bloque y una reordenación de la ejecución de los eventos basada en la aproximación en tres fases. Como resultado experimental, la implementación de este algoritmo en Java ha ofrecido unos resultados que presentan aceleraciones superiores a 9 para 16 hilos de ejecución con respecto a la ejecución secuencial. Cabe destacar también la consecución de aceleraciones superlineales con 4 hilos.
Finalmente, la potencia expresiva de la arquitectura de simulación desarrollada ha sido puesta a prueba con el modelo de un centro hospitalario. En este caso se ha comprobado que, enfrentado a problemas reales con características no beneficiosas para el entorno de simulación es posible obtener resultados muy satisfactorios para menos de 4 hilos, decayendo la escalabilidad del problema para más hilos.