DLML (del inglés Data List Management Library) es una librería para el procesamiento paralelo de listas de datos. Los usuarios de DLML modelan sus datos como elementos de una lista y usan funciones DLML para insertar y obtener sus datos para procesarlos, similarmente al modelo productor/consumidor. Internamente, DLML maneja varias listas distribuidas, una por cada nodo del cluster donde se ejecuta una aplicación, y cuando una lista se vacía, DLML automáticamente obtiene datos de otros nodos. De esta manera, los aspectos de comunicación y balance de carga necesarios para un buen desempeño son ocultados a los programadores. DLML fue diseñado para clusters compuestos de nodos con un sólo procesador, y en base a procesos y paso de mensajes entre los mismos. Esta tesis presenta MultiCore (MC) DLML, una versión de DLML diseñada para capitalizar mejor en el paralelismo interno de clusters compuestos de procesadores multinúcleo (multicore). MC-DLML está diseñado en base a hilos de ejecución, en comunicación de paso de mensajes y de memoria compartida; el paso de mensajes se usa para la comunicación entre procesadores y la memoria compartida para la comunicación entre hilos ejecutándose dentro de un mismo multicore mismo nodo. La tesis analiza varias organizaciones de listas de datos, y varios algoritmos de sincronización de memoria compartida para acceder a las listas, con el propósito de balancear la carga de trabajo dentro de cada nodo y entre distintos nodos. Para evaluar el desempeño de MC-DLML utilizamos un cluster con procesadores quad-core con hyper-threading y varias aplicaciones con distintas granularidades de datos y distintos patrones de acceso a los mismos. Con algunas aplicaciones, MCDLML corre hasta dos veces más rápido que DLML. Lo anterior fue posible una vez que se resolvieron varios aspectos relacionados con el overhead creado por el paso de mensajes debido al uso de múltiples hilos, localidad de datos en las cachés y el consumo de memoria. Con los distintos algoritmos de sincronización de memoria compartida, el desempeño de MC-DLML varía dependiendo de la granularidad y el patrón de acceso de las aplicaciones, lo que sugiere el diseño de nuevos algoritmos o la integración de adaptabilidad en los algoritmos en tiempo de ejecución; este último aspecto sólo se analiza para trabajo futuro. |
||||