MPI Slaver y Google Summer Code 2006
- 12 May, 2006 //
- google SoC, informática, pfc //
- Tags :
- 1 Comment
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.
[...] 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. [...]