• No se han encontrado resultados

3 Estado del arte

3.3 Sistemas software con ejecución paralela

3.3.1 Plataforma de Ciobanu y Wenyuan

La plataforma correspondiente a G. Ciobanu y G. Wenyuan, descrita en [Ciobanu & Wenyuan, 2003] está programada en C++ y preparada para ser ejecutada en un clúster de 64 ordenadores que funcionan sobre un sistema operativo Linux y cuyas características principales son comunes para todos ellos: Pentium III dual a 1.4 GHz y 1 Gb de memoria RAM interconectados en una red Ethernet de gigabyte. Para la comunicación entre ellos se eligió la técnica de la interfaz de paso de mensajes (MPI). Inicialmente fue creada para la computación de Sistemas P de transición sin añadir características adicionales como la creación de membranas o la disolución de las mismas.

Los propios autores y tal y como comenta L. Fernández en [Fernández, 2011], indican que consiste “en 64 nodos de procesadores duales. Cada uno con un microprocesador Intel PIII de 1.4 GHz con 1Gb de memoria […]. Las reglas son implementadas como procesos. En la fase de inicialización, se crea un proceso por cada regla. La aplicación de reglas se realiza en términos de vueltas. […] Debido a que muchas reglas están ejecutando concurrentemente y comparten recursos, un algoritmo de exclusión mutua es necesario para asegurar la integridad […] cuando más de una regla puede ser aplicada en las mismas condiciones, el simulador selecciona aleatoriamente una entre las candidatas”.

Para la ejecución del software, el usuario proporciona la configuración inicial a través de un fichero con formato propio y obtiene los resultados en otros dos ficheros

92

diferenciados: en el primero se obtiene la configuración final y en el segundo, el estado de cada una de las membranas (estado de los multiconjuntos) tras cada uno de los pasos de evolución. Los principales puntos sobre los que se basa su funcionamiento son:

 Cada una de las membranas es modelada mediante un proceso individual que contiene todas las estructuras de datos necesarias para almacenar las reglas de evolución, los multiconjuntos y los resultados de aplicar dichas reglas. Es cada uno de estos procesos, de manera interna en cada membrana, el encargado de llevar a cabo la aplicación de las reglas, la resta de los elementos consumidos y la generación de los nuevos objetos.

 Cada proceso de cada membrana se puede ejecutar en paralelo con el resto de los procesos pertenecientes al resto de las membranas. Una vez que se termina el proceso correspondiente al paso de evolución, las membranas envían y reciben los elementos para o desde membranas adyacentes vía la técnica de paso de mensajes (MPI). Toda la sincronización entre ellas se realiza de esta manera.

 Dentro de cada uno de los procesos, mediante técnicas de multithreading se consigue que existan tantos hilos de ejecución como reglas en la membrana. Cada uno de estos hilos accede al multiconjunto correspondiente con la esperanza de poder consumir tantos recursos como necesite. En principio las reglas contemplan la posibilidad de tener diferente prioridad y en caso de acceder a diferentes gránulos del multiconjunto de objetos, se podrían ejecutar en paralelo. Si existen reglas con igual prioridad que comparten objetos en su antecedente entonces se escoge aleatoriamente una y acceden bajo exclusión mutua a los recursos.

 Cuando una membrana termina su proceso de ejecución y ya no tiene más posibilidades de evolución (no puede aplicar más reglas sobre el multiconjunto pertinente) se pone en estado de “inactividad”. La piel es la encargada, vía broadcast, de solicitar a todas y cada una de las membranas su estado, de tal manera que es la encargada de determinar que el sistema ha llegado a su configuración final si todas las membranas están inactivas. Analizando esta plataforma se pueden obtener una serie de conclusiones que Tejedor hace notar en [Tejedor, 2011], de la manera:

“El análisis de esta plataforma determina que se alcanza el paralelismo externo condicionado a que el sistema de membranas no sobrepase el límite de 128 membranas. Este límite viene impuesto por el número de procesadores existentes en la plataforma ya que cada membrana debe ejecutarse en un proceso independiente. Para P sistemas mayores el paralelismo externo se dará en cierto grado determinado por la relación entre los 128 procesadores y el número de membranas. En cuanto al paralelismo interno, es necesario indicar que se alcanza en un grado muy pequeño debido, fundamentalmente, a dos hechos. Por

93

un lado, el límite en el número de procesadores disponibles obliga a que los hilos de ejecución que ejecutan cada regla necesiten de multiprogramación para compartir dichos procesadores. Por otro lado, la ejecución de los hilos sufre paradas ocasionadas por la espera de la ejecución de reglas con más prioridad y por el acceso con exclusión mutua al multiconjunto de objetos de la región.

El punto débil de esta implantación está en la congestión que se produce en la red provocada por la transferencia de los objetos generados en la aplicación de reglas. Mientras que la comunicación entre membranas situadas en el mismo procesador se realiza por medio de memoria compartida, la comunicación entre membranas localizadas en procesadores distintos se realiza compartiendo el mismo medio. Esto provoca que la transferencia de objetos sea secuencial. Los propios autores indican que la fase comunicación de objetos consume gran parte del tiempo de ejecución de cada paso de evolución y que una mejora de esta fase produciría un impacto significativo en la disminución de dicho tiempo”.

A modo de resumen y haciendo referencia a las características que se han marcado como objetivo de cualquier plataforma, podemos indicar: primero, que aunque se consigue un cierto nivel de paralelismo, para que se considerase adecuado se debería de incluir un procesador por cada una de las reglas. En cuanto a su rendimiento, los autores indican que el comportamiento de la plataforma puede ser impredecible. Ciobanu indica que se produce una congestión indebida en la red que dilata, muchas veces de forma inesperada, los tiempos de respuesta. Este problema limita, como es lógico, la escalabilidad del propio sistema, ya que aunque fuese especialmente fácil la adición de nuevos nodos que aumentasen el paralelismo y la complejidad del Sistema P a computar, la gestión de la red provocaría un efecto adverso e inversamente proporcional de cara su rendimiento. Por otra parte, teniendo en cuenta el coste asociado al hardware utilizado, pensar en un sistema con múltiples membranas y múltiples reglas en cada membrana provocaría un coste global demasiado alto.

En cuanto a su flexibilidad, dado que está escrito en un lenguaje de alto nivel de abstracción, no debería ser muy complicado añadir nuevas características a los Sistemas P

contemplados (por ejemplo, reglas symport/antiport o el uso de

promotores/inhibidores). Sin embargo, por otra parte, la ejecución de reglas que pudieran ser mucho más complicadas en cuanto a su proceso puede provocar una disminución en el rendimiento global.