next up previous contents
Next: 2.3.8 Otros estándares de Up: 2.3.7 MPI Previous: 2.3.7.2 Diseño   Índice General

2.3.7.3 Implementación

Como se vio anteriormente, no existe la implementación de MPI; existen quizá varias decenas de implementaciones que se adhieren a la especificación MPI pero que pueden ser operativamente diferentes.

Para fines de este proyecto, se empleará la implementación MPICH de MPI. Los criterios tomados en cuenta para seleccionar esta implementación se describirán más adelante; sin embargo se considera adecuado describir a MPICH como un ejemplo de implementación de MPI. Aun así, téngase en mente que existen muchas implementaciones de MPI. Algunas de estas son MPI-BIP, LAM/MPI, W32MPI/p4, ScaMPI, y algunas implementaciones particulares de los fabricantes, como el MPI de Cray, IBM MPI (particularmente para sus sistemas Scallable Parallel), Digital MPI en equipos DEC/Compaq, MPI/Pro (una implementación comercial disponible para varias plataformas) y HP MPI (en particular para las supercomputadoras HP/Convex Exemplar).

MPICH es una de las implementaciones más robustas de MPI, habiendo evolucionado junto con el estándar, y estando disponible para una gran cantidad de plataformas.

Tradicionalmente, un estándar como MPI involucra un proceso de definición, y una vez que la especificación está bien definida, se procede a la implementación, existiendo considerable retardo entre la terminación del estándar y la aparición de implementaciones funcionales.

En el caso de MPI, un par de científicos de la división de matemáticas y computación del Laboratorio Nacional de Argonne, se ofrecieron como voluntarios, durante la creación del MPI Forum, para realizar una implementación inmediata, que siguiera el desarrollo de la especificación y permitiera exponer rápidamente los problemas que la implementación pudiera plantear. Partiendo de software existente en el momento, MPICH implementó la primera pre-especificación de MPI en unos cuantos días. MPICH ha seguido el desarrollo de la especificación MPI y actualmente está disponible de manera portable para una gran cantidad de plataformas, entre las que se incluyen sistemas Unix comerciales (Solaris, HP UX, AIX, IRIX), máquinas masivamente paralelas (Intel Paragon, Cray) y variantes libres de Unix (Linux, BSD). MPICH soporta arquitecturas SMP, MPP, redes de estaciones y clusters.

A nivel implementación MPICH proporciona una biblioteca de funciones que implementan la API de MPI. MPICH está diseñado por capas, permitiendo gran portabilidad sin sacrificar el rendimiento. A niveles altos MPICH implementa las funciones de MPI, comunicándose con la capa inferior por medio de una interfaz conocida como ``interfaz de canal''. La capa inferior implementa, de manera específica para cada plataforma, funciones para intercambiar información entre procesos, según el canal de comunicaciones que se tenga (desde memoria compartida hasta una red local)

MPICH también proporciona los medios para iniciar una aplicación en MPI. Este es un detalle específico a la implementación. En el caso de MPICH, se proporciona un comando mpirun, al que se le puede especificar el número de procesos a iniciar. Esto debe hacerse desde el inicio porque no existen funciones de MPI que permitan iniciar más procesos. El comando mpirun encapsula todo el proceso necesario para determinar la arquitectura del equipo en que se está ejecutando, preparar la interfaz de comunicaciones, y lanzar los procesos que componen la aplicación.


next up previous contents
Next: 2.3.8 Otros estándares de Up: 2.3.7 MPI Previous: 2.3.7.2 Diseño   Índice General
2002-05-15