Una implementación multithread de MPI para Linux Alejandro Calderón, Félix García, Jesús Carretero Octubre de 1999 Resumen En este artículo se presenta una implementación multithread de la interfaz estándar de paso de mensajes MPI, que se está desarrollando en el Departamento de Arquitectura y Tecnología de Sistemas Informáticos (DATSI) de la Universidad Politécnica de Madrid, denominada MiMPI. MiMPI ofrece una semántica multithread y utiliza operaciones multithread para incrementar el rendimiento de ciertas operaciones, como por ejemplo las colectivas. MiMPI ejecuta en estaciones de trabajo UNIX, Linux y en multicomputadores SP2. El artículo describe los principales objetivos de diseño, la actual implementación de MiMPI y los resultados de su evaluación realizada sobre una red de estaciones de trabaoj con Linux. 1 Introducción MPI [7] es una interfaz estándar de paso de mensajes cuyos objetivos básicos son: la funcionalidad, la eficiencia y la portabilidad. Aunque la semántica que especifica MPI para el paso de mensajes permite su utilización en aplicaciones y entornos multithread, en la actualidad no existe ninguna implementación de este estándar que verdaderamente pueda ser utilizada para desarrollar un programa MPI multithread. El uso de threads en una aplicación que emplea paso de mensajes y la implementación de un sistema de paso de mensajes utilizando threads puede ser muy útil por varias razones: Los threads permiten una implementación natural de operaciones no bloqueantes, basta con crear un thread que procese la operación no bloqueante. El uso de threads puede incrementar la eficiencia de la implementación de operaciones colectivas. Los threads ofrecen un modelo natural para implementar ciertas operaciones que requieren memoria compartida. En general todo proceso que emplea paso de mensajes para comunicarse con otros, lleva a cabo dos tareas bien diferenciadas, una de cómputo y otra de intercambio de mensajes. Estas tareas pueden implementarse de forma eficiente utilizando threads dentro del mismo proceso. Los threads se están convirtiendo en el mecanismo de programación paralela de los multiprocesadores de memoria compartida, ya que permiten explotar el paralelismo de dichas arquitecturas de una forma eficiente. Las ventajas anteriormente citadas junto con la falta de una implementación de MPI con soporte para la ejecución de aplicaciones multithread en redes de estaciones de trabajo con Linux, motivó a los autores el desarrollo de MiMPI. MiMPI [5] es una implementación de MPI que está desarrollándose en el Departamento de Arquitectura y Tecnología de Sistemas Informáticos (DATSI) de la Universidad Politécnica de Madrid. MiMPI surgió con dos objetivos básicos: ofrecer una implementación de MPI que pueda ser utilizada en programas multithread (MT-safe), y utilizar threads para su implementación con el objetivo de mejorar el rendimiento de ciertas operaciones. En la actualidad MiMPI implementa un subconjunto de todas las primitivas de MPI y ha sido utilizado con éxito en ParFiSys [4] [9] un sistema de ficheros paralelo desarrollado en el DATSI. El resto del trabajo está organizado como sigue: en la sección II se describe brevemente MPI. En la sección III se presentan algunas de las implementaciones existentes de MPI. En la sección IV se realiza una descripción de MiMPI, sus objetivos de diseño e implementaciones actuales. La evaluación de MiMPI se presenta en la sección V y los resultados obtenidos de dicha evaluación se muestran en la sección VI. Estos resultados comparan el rendimiento de MiMPI con el de MPICH (implementación de libre distribución) en una red de estaciones e trabajo con Linux. El trabajo finaliza incluyendo algunas conclusiones y las líneas de trabajo futuras. 1