MPI Slaver y Google Summer Code 2006

MPI Slaver ( o Esclavista MPI en español) ha sido mi propuesta de proyecto para el grupo OSCAR (Open Source Cluster Application Resourcers) y la Mars Space Flight Facility.

MPI Slaver es una librerí­a de utilidades de alto nivel que se construye sobre MPI y que permite una sencilla programación en modelo maestro – esclavo.

Las ventajas de usar MPI Slaver frente a MPI directamente surgen cuando se dispone de un cluster que utilice openMosix o Kerrighed y soporte la migración de procesos de forma transparente.

Para explicar como MPI Slaver aumenta el rendimiento en un cluster de alta disponibilidad acercándolo a un enfoque hí­brido entre HPT y HPC expondré parte de la descripción que utilicé para la descripción del proyecto.

A MPI process ‘A’ (the main worker) will ask the master for help to do a task, requesting ‘X’ helper workers to get aided in his task. The master will assign it a set with ‘X’ workers. When ‘A’ receive them, it split it task into ‘X’ parts and send one of them to each helper worker.

When a helper process ends, it send its results to the main worker and returns to a free worker state (notifying master).

At this moment, ‘A’ has finish it task and continues its execution.

The level of sub tasking of a task is only set by the application programmer.

Which that schema, and creating more MPI process than nodes in the cluster, openMosix or Kerrighed will take care of process migration, assigning processes to idle nodes. Maybe there will be more than one process by node, but it is not a problem: it is desirable because some of them could be waiting for work (and will be migrated when a task will be assigned to them) and will not consume CPU time.

A highly parallelizable software, but at coarse-grain level is the target for MPI Slaver. Using only openMosix or Kerrighed will lead to unused CPU power: it is a heterogeneus cluster, so when the high end processors will finish their tasks the processes on the low power computers will be migrated to them; therefore the computing power in the low power computers will be unused.

Using MPI in a classical way in this environment will not produce a better performance than a fork programming model. The key is to decrease the grain level and to increase the MPI processes number, but not using a SPMD classical approach, but a MPMD available by means of MPI Slaver.

Posted By dsuarez

David nació en Las Palmas de Gran Canaria, España. Estudió Ingeniería en Informática en la Universidad de Las Palmas de Gran Canaria (ULPGC), donde ha trabajado en investigación los últimos años. Siempre ha sentido una gran curiosidad por los ordenadores y las ciencias, y más recientemente en el mundo empresarial. Ha trabajado como programador/analista, consultor en tecnologías de la información y obtuvo la beca de Google Summer of Code en 2006. Es socio fundador de Wantudu (http://wantudu.es), empresa especializada en terminales táctiles para hoteles.

One Response to “MPI Slaver y Google Summer Code 2006”

  1. [...] El objetivo del proyecto será desarrollar el operador @() para el lenguaje de programación DaVinci, utilizando por la Mars Space Flight Facility para realizar análisis de datos sobre Marte. Este operador debe permitir ejecutar una determinara operación sobre un conjunto de datos de forma paralela. Para ello he pensado utilizar, en primera aproximación, la librerí­a MPI de programación paralela y un esquema de trabajo maestro-esclavo. El texto de la propuesta está prácticamente í­ntegro en éste post: MPI Slaver. [...]

Leave a Reply