7 E5/5
u
L) 1<)(o
$ '-'e? /
j- $g
5o1ieJir ,.p np;
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA
(14 41444 CaL 4e Lc3
ESCUELA DE CIENCIAS DE LA COMPUTACIÓN
Tema:
"Investigación de un estándar de programación paralela para el
grupo de Desarrollo de Software basado en MPI"
Tesis previa a la obtención del
título de Ingeniero en Sistemas
Informáticos y Computación.
Línea de investigación:
Computación paralela.
Director:
Ing. Jorge López
Aspirante:
Ángel Polivio Gualán Gualán
Loja - Ecuador
CERTIFICACIÓN
Ingeniero
Jorge López
Director de Tesis
Certifica:
Que el presente trabajo de investigación, previo a la obtención del título de INGENIERO EN
SISTEMAS INFORMÁTICOS Y COMPUTACIÓN, ha sido dirigido, supervisado y revisado en
todas sus partes, por lo mismo, cumple con los requisitos legales exigidos por la Universidad
Técnica Particular de Loja, quedando autorizada su participación.
Loja, 26 de febrero del 2007.
MP! 0 íessage Passing Interface)
AUTORIA
El presente proyecto de tesis con cada una de las observaciones, análisis, evaluaciones y conclusiones emitidas, es de absoluta responsabilidad del autor.
MPI (\f essage Passing Interf ace) j
CESIÓN DE DERECHOS
El autor, declaro estar de acuerdo con la disposición del Estatuto Orgánico de la Universidad Técnica Particular de Loja en su Art. 67, en el cual se anuncia lo siguiente: "Forman parte del patrimonio de la Universidad la propiedad
intelectual de investigaciones, trabajos científicos o técnicos y tesis de grado que se realicen a través o con el apoyo financiero académico o institucional (operativo) de la Universidad".
MP! (\íessage Passzng Interface)
AGRADECIMIENTO:
Un cordial agradecimiento a mis directores de tesis el Ing. Manolo Sangoquiza y el Ing. Jorge López que siempre estuvieron dispuestos a cualquier sugerencia o inquietud, también de manera especial a mis padres
Luís Antonio Gualán y Mariana de Jesús Gualán por haber depositado confianza en mi y darme todas las
facilidades para alcanzar mi meta propuesta, a mis amigos y amigas por darme ánimos y apoyo durante toda la carrera, y a todas la personas que estuvieron
apoyándome en todo momento.
MM íessage Passing Interface)
DEDICATORIA
El presente trabajo esta dedicado a mis
padres Luis Antonio Gualán y Mariana de
Jesús Gualán, a mis hermanos Patricio,
Bertha y Javier, y a toda mi familia que
estuvo pendiente de mí.
~1
0íessage Passing Interface)
ÍNDICE
AUTORIA ... ... . ... . ... .. ... .. .... ---- ... .. ... ...
CESIÓNDE DERECHOS...
II
AGRADECIMIENTO...
III
DEDICATORIA...
iv
OBJETIVOSDEL PROYECTO...
vi¡¡
INTRODUCCIÓN...
ix
CAPITULO 1
MPI (message passing interface)
1
.1. INTRODUCCIÓN... 21.2. OBJETIVOS DE MPI... ... . ... . ... . ... .. ... ... ... 3
1.3. MODELO DE PROGRAMACIÓN PARALELA... 3
1.4. ESTÁNDARES DE PROGRAMACIÓN BASE... 4
1.5. OPERACIONES GLOBALES DE MPI... 7
1.6. PROGRAMACIÓN MODULAR... 9
1.7. ESPECIFICACIONES DE MPI. ... ... 11
CAPITULO II
Implementaciones open source de MPI
2.1. INTRODUCCIÓN... 152.2. LA IMPLEMENTACIÓN LIBRE DE MPI, MPICH. ... . ... ... 15
2.2.1. CARACTERÍSTICAS... 16
2.3. LA IMPLEMENTACIÓN LIBRE DE MPI, MPICH-G2. ... . ... . ... . ... ... 16
2.3.1. CARACTERÍSTICAS... 17
2.4. LA IMPLEMENTACIÓN LIBRE DE MPI, MPICH-V1. ... ... 18
2.4.1. CARACTERÍSTICAS... 18
2.5. RESUMEN COMPARATIVO DE LAS IMPLEMENTACIONES... 19
2.6. ESTUDIO DE LAS HERRAMIENTAS DE MPICH Y CONFIGURACIONES PARA EL ENTORNO DE DESARROLLO DEL GDS... ... . ... . ... .. ... . 20
2.6.1. MPD. ... . ... . ... . ... .. .... ... ... ... 21
2.6.1.1. OPCIONES DEL MPD. ... ... .. ... . ... ... 21
2.6.2. MPIRUN PARA MPD. ... . ... ... ... 23
JIPI 0
íessage Passzng Interface)2.6.2.2. OPCIONES DE MPIRUN . ...
2.6.3. LA HERRAMIENTA GUIMPIRUN. .... ... .... ... . ... ...
2.6.3.1. OPCIONES AVANZADAS...
2.6.4. LA HERRAMIENTA MPICONFIGURE... ... ... ....
2.6.5. LA HERRAMIENTA MPIREGISTER. ... ...
2.6.6. LA HERRAMIENTA UPDATE TOOL. ... . ... ...
2.6.7. LA HERRAMIENTA JOB MANAGER TOOL. ... ...
CAPITULO III
Implementación del estándar
3.1.
INTRODUCCIÓN...
3.2.
CLI, .NET
y
C#...
3.3. MÉTODOS A UTILIZAR PARA UNA IMPLEMENTACIÓN DE MPI EN
C# DESDE UNA IMPLEMENTACIÓN DE C. ... . ... ... ...
3.4. ESQUEMA DE LA IMPLEMENTACIÓN DE MPI EN C#...
3.5. DEFINICIÓN DE ESTÁNDARES DE PROGRAMACIÓN PARALELA
BASADA EN MPI PARA EL GDS EN C#...
3.5.1. BASES DEL ESTÁNDAR OOMPI. ... . ... ...
3.5.2. TIPOS DE DATOS...
3.5.3. MANEJO DE BUFFERS. .... . ... . ... ... ...
3.5.4. COMUNICADORES. ... . ... . ... .. ... .. ... ...
3.5.5.
TRATAMIENTO DE ERRORES...
3.5.6. PROGRAMACIÓN...
CAPITULO IV
Trabajando con el estándar
4
.1.
INTRODUCCIÓN...
4.2. EL ALGORITMO DE CÁLCULO DE PI BASADO EN
APROXIMACIONES RECTANGULARES...
A 12 AMÁI TCTC r%i Al1...
Pl L#L.L rtL¼ Jr\J. 1 iI'.J I_I LL.DTTM( M l 1 TI(I ¡A1 IJ'.JfJ_ rMPI (íessage Passng Interface)
CAPITULO V
Conclusiones y recomendaciones.
5.1. CONCLUSIONES . ... . ... ... 73
5.2. RECOMENDACIONES . ... .. ... ....... 74
REFERENCIAS BIBLIOGRÁFICAS... ... . ... ... ... 76
MM 0 íessage Passing Interface)
OBJETIVOS DEL PROYECTO
OBJETIVO GENERAL
• Investigación de un estándar de programación paralela para el grupo de Desarrollo de Software basado en MPI.
OBJETIVOS ESPECÍFICOS
• Estudiar los estándares propuestos por MPI
• Evaluar las características y ventajas para distintos lenguajes de programación como C Y C#.
• Investigar la implantación de estos estándares utilizando un lenguaje de programación.
• Poseer estándares y/o herramientas desarrolladas para el grupo, que ayude a conseguir sus respectivos propósitos.
RESULTADOS.
• Establecer estándares de programación paralela para que se adopte en cualquier proyecto que realice el departamento.
• Disminuir en lo que sea posible los tiempos de ejecución de los programas.
A MI (\íessage Passing Interface)
INTRODUCCIÓN
La tecnología de los ordenadores avanza a pasos gigantescos, con capacidades de procesamiento cada vez más exigidas, entonces surgió la idea de unir computadoras que permitan realizar la misma tarea en común. De esta forma se consigue la resolución de tareas complejas y largas en conjunto, que una sola máquina no seria capaz de realizar en un tiempo corto. Pero ante toda esta unión de computadores entre si, surge también la necesidad de construir aplicaciones que funcione en entornos distribuidos paralelos, basados en una interfaz de comunicación.
MPI
(Message Passing Interface)
es una interfaz estandarizada para la realización de aplicaciones paralelas basadas en paso de mensajes. La interfaz posee funciones, constantes y tipos de datos propios que facilitan la tarea de programar aplicaciones paralelas que puedan ser ejecutadas en ambientes distribuidos.MPI es, como su nombre lo indica, una interfaz, lo que quiere decir que el estándar no exige una determinada implementación del mismo. Lo importante es dar al programador una colección de funciones para que el diseñe su aplicación, sin tener que necesariamente conocer el hardware concreto sobre el que se va a ejecutar, ni la forma en la que se han implementado las funciones que emplea.
Los elementos básicos de MPI son una definición de un interfaz de programación independiente de lenguajes, más una colección de implementaciones de interfaces para los lenguajes de programación más extendidos en la comunidad de computadores paralelos. Un programador que quiera emplear MPI para sus proyectos trabajará con una implementación concreta de MPI.
Existen varias implementaciones de libres de MPI, que poseen las funciones, constantes y tipos de datos implementados, listos para ser utilizados, por lo que una implementación ya construida facilita la programación, dejándole al programador solo la tarea de llamar a las funciones.
rM4.
MP! 0 [essage Tass:ng Interface)
Las funciones, constantes y tipos de datos de la implementación base deberán ser equivalentes en la implementación que se derive de ella, como es caso ahora, todas las funcionalidades que presta la implementación base, presta también la implementación en C#, con algunas características adicionales que facilitan el entendimiento de cada función, también se utiliza todas las características existentes dentro de la tecnología .Net para que la implementación en C# sea lo mas eficiente posible.
El intercambio de información o de datos, así como la sincronización, se hacen mediante el paso de mensajes. MPI dispone de funciones de comunicación punto a punto (que involucran sólo a dos procesos), funciones y operaciones colectivas (que involucran a múltiples procesos). Los procesos pueden agruparse y formar comunicadores, lo que permite una definición del ámbito de las operaciones colectivas, así como un diseño modular.
Al utilizar estándares de programación paralela en un programa, se puede utilizar con diferentes objetivos, uno de los cuales es la disminución del tiempo de ejecución de los programas, ya que un grupo de computadores trabajan separadamente para realizar un trabajo común, así las tareas que antes se demoraban horas en su ejecución, ahora con una buena configuración del cluster y utilizando de la mejor manera las funciones de MPI los tiempos de ejecución disminuyen en una cantidad considerable, los programas con estándares MPI se demoraran en ejecutarse mucho menos que los programas que no utilizan estándares MPI.
MM [essage Passing Interface)
CAPITULO 1
OBJETIVOS
Estudiar y obtener información necesaria que permita entender el ambiente de programación paralela propuesto por el estándar de MPI.
MP! (?tíessage Passing Interface)
1.1. INTRODUCCIÓN
La interfaz de paso de mensajes MP! (message passing interface), es un estándar de programación paralela, que se usa en computadoras con capacidad de ejecución en paralelo en especial las máquinas con memoria distribuida. Un esquema de máquinas con memoria distribuida dentro de una red se puede observar en la figura 1.1.
Distributed Memory System
Procesof Procesor Procsor
Es,
Qj
C) CD]
Network
Fig, 1.1 Sistema de memoria distribuida1.
MPI tiene como meta brindar un estándar para escribir programas que implementan funciones MPI y que se ejecuten en un ambiente paralelo, en un ambiente distribuido este estándar puede llegar a ser muy útil por cuanto, que determinadas funciones que brinda MPI deben ser llamadas en un determinado sitio del código fuente y otras en otro sitio específico, para que un determinado programa se ejecute en una ambiente distribuido de red.
Una de las ventajas de implementar un estándar para el paso de mensajes es por la facilidad de usar las funciones y su portabilidad a diferentes ambientes de ejecución.
Un estándar MPI puede constar de 129 funciones por lo menos, dependiendo de que tan completa sea esta implementación, estas funciones reciben parámetros y variables que se envían, además consta de constantes y tipos de datos que permiten hacer operaciones.
MP! íessage Passing Interface)
1.2. OBJETIVOS DE MP!.
MPI como estándar tiene ciertos objetivos que se debe tener en cuenta al momento de realizar una implementación a un lenguaje apropiado, o simplemente usar una de las implementaciones que ya están construidas. Estos objetivos son:
Diseñar una interfaz de programación que permita la portabilidad de aplicaciones paralelas.
• Permitir una comunicación eficiente, donde el programador no tenga que saber como fue implementado esa función de comunicación sino como utilizar, además debe garantizar la utilización mínima de memoria y procesador, para que la comunicación sea más rápida.
. Proveer una interfaz de comunicación seguro, El programador no debe lidiar con fallas de comunicación
• Diseñar una interfaz de comunicación que se pueda implementar en diferentes plataformas de hardware y de software sin tener que modificar mucho en el código del programa.
• Todas las funciones deben ser llamadas y utilizadas de la misma forma en cualquier lenguaje que se implemente.
• Los procesos que se generan al momento de ejecutar el programa, estos procesos deben garantizar que la tarea encomendad se ejecute en un ambiente seguro o sea producir tareas seguras.
1.3. MODELO DE PROGRAMACIÓN PARALELA.
La base de la comunicación entre procesos son las funciones SEND (Enviar un mensaje) y RECIVE (Recibir un mensaje), están funciones permiten la comunicación entre procesos a través de mensajes.
41P1
(\[essage T'assing Interface)que, el modelo de programación MPI es algunas veces referido como
MPMD
(mu/tiple pro gram mu/tiple data)
para distinguirlo del modelo
SPMD,
en el
cual cada procesador ejecuta el mismo programa"2.
1.4. ESTÁNDARES DE PROGRAMACIÓN BASE.
MPI esta basado netamente en funciones que realizan una tarea específica,
por lo cual los estándares de programación básica para que un programa
pueda ejecutarse en paralelo y en un ambiente distribuido son 6 funciones
que ningún programa puede dejar de prescindir.
Inicia un sistema MPI.
MPI_INIT( mt *argc, char ***argv)
MPI_INIT argc, argv
son requeridos solo por el contexto del
lenguaje C, en el cual son los argumentos del
programa principal.
MPI_FINAUZE
Termina un sistema MPI.
MPI_FINALIZE()
Determina el número de procesos en un sistema
M PI.
MPI_COMM_SIZE
MPI_COMM_SIZE( comm, size)
IN
commcomunicador (manejador [handie])
OUT
sizenúmero de procesos en el grupo del
comunicador (entero).
Determina el identificador del proceso actual "mi
proceso".
MPI_COMM_RANK MPI_COMM_RANK( comm, pid)
IN
commcomunicador (manejador [handle])
OUT
pididentificador del proceso en el grupo del
comunicador (entero).
Envía un mensaje.
MPI_SEND( buf, count, datatype, dest, tag,
comm)
IN
bufdirección del buffer a enviar (tipo x)
MPI_SEND
IN
countnúmero de elementos a enviar del buffer
(entero >= O)
IN
datatypetipo de datos del buffer a enviar
(handle)
MP! (\[essage Passing interface)
IN
tag message tag (entero)IN
comm comunicador (handie)Recibe un mensaje.
MPI_RECV( buf, count, datatype, source, tag,
comm, status)
OUT buf dirección del buffer a recibir (tipo x)
IN
count número de elementos a recibir del bufferMPI_RECV
(entero >= O)IN
datatype tipo de datos del buffer a recibir(handie)
IN
source identificador del proceso fuente, oM PI_ANY_SOU RCE(entero)
IN
tag message tag, o MPI_ANY_TAG(entero)IN
comm comunicador (handie)OUT
status estado del objeto (estado)IN:
Significa que la función usa el parámetro pero no modifica.OUT: Significa que la función no usa el parámetro pero puede modificar. INOUT: Significa que la función usa el parámetro y modifica el parámetro.
Tabla 1.1 Funciones básicas de MPI3.
Las dos primeras
MPI_INIT
yMPI_FINALIZE
funciones que permiten empezar y finalizar un sistema MPI, para poder realizar la misma operación, las funciones restantes utilizan un manejador (handie) o"comunicador"
como argumento para poder identificarse dentro de un grupo y contexto de procesos, la palabra claveMPI_COMM_WORLD
permite agrupar procesos dentro de un contexto MPI.La función
MPI_INIT
inicia un sistema MPI, esta función debe ser llamada una sola vez por cada proceso, también es la función que primera debe ser llamada, antes que ninguna otra función, después se llaman las demás funciones. La funciónMPI_FINALIZE
termina un sistema MPI, después de esta función ninguna otra función puede ser llamada.Las dos funciones siguientes
MPI_COMM_SIZE
yMPI_COMM_RANK,
permiten obtener el número de procesos e identificador para cada proceso en un sistema MPI, el identificador del proceso es único y continuo número para cada proceso, se representa con un número entero.
MP! (Iíessage Passing Interface)
Para entender mejor un esquema de MPI, en la tabla 1.2 en la parte
principal muestra una estructura algorítmica básica de un programa
realizado con MPI, este algoritmo en Pseudocódigo muestra como se utiliza 4
de las funciones básicas descritas anteriormente, en las funciones del
Pseudocódigo, una función creada para un proceso y que este envía
mensajes, y otra función creada para otro proceso que se encarga de recibir
los mensajes enviados por el proceso anterior, para enviar utiliza la función
MPI_SEND
en este caso particular envía 100 procesos, y para recibir utiliza
la función
MPI_RECIVE
que recibe todos los mensajes enviados por el
proceso anterior.
program principal begin
MPIINIT()
1/ Inicia el sistema MPI.
MPICOMMSIZE(MPICOMM_WORLD, count) II Obtener el # de procesos.
if count2 then exitII Deben ser dos procesos MPICOMr4RANK(MPI_COMM_WORLD, myid) /1 Obtener el identificador de
cada proceso. if myid = O then funcionA(lOO) else funcionB () endif
MPIFINALIZE()7/ Finaliza el sistema MPI end
1/ Para el proceso O funcionA( num
begin
for i=l to num
MPISEND(i, 1, MPIINT, 1, 0, MPI CO4 WORLD) /7 Envía
mensajes al otro proceso
endfor
i=-1 II Enviaa mensaje de terminación
MPISEND(i, 1, MPIINT, 1, 0, MPI CONM WORLD) end
7/ Para el proceso 1 funcionE
begin
/7 recibe los mensajes
MPIRECV(msg, 1, MPIINT, O, O,MPI COMN WORLD, status) while msg != -1 do
usar mensaje(msg) II usarlo los mensajes
MPIRECV(msg, l,MPI INT, O,O,MPI COMM WORLD, status) endWhile
end
MP! ( [essage Passing interface)
En ciertas ocasiones cuando se quiere hacer operaciones entre procesos o
que estos procesos sean distribuidos en más procesos y máquinas las
funciones de envío y recepción de mensajes son sustituidas por otras
funciones que permites distribuir en forma más amplia los procesos.
1.5. OPERACIONES GLOBALES DE MPI.
Las aplicaciones paralelas requieren de comunicación entre dos o más
procesos, una de las formas de comunicar varios procesos dentro de un
sistema MPI es la comunicación punto a punto que comunica dos proceso
usando las funciones SEND y RECIVE dependiendo de la conveniencia del
programador, y estos procesos a la vez se comuniquen con otro proceso y
así se genere una cadena de comunicación, pero las MM provee de funciones
que permiten comunicar con varios procesos con una sola llamada a una
función, estas funciones son conocidas como funciones de operaciones
colectivas.
Las principales funciones de comunicación colectiva u operaciones en grupo
se definen a continuación.
1. Transmisión de mensajes en broadcast.
2. Distribución de mensajes.
3. Envío y recepción de mensajes.
4. Operaciones de reducción de mensajes (suma, mínimo, máximo,
multiplicación, etc.).
S. Recolección de mensajes.
6. Combinaciones de todas estas formas de comunicación.
/ÍPI ( [
essage Passing Interface)
012
(1) NPIBCAST
(2) MpI_SCATrER
(3) MPL SEND/ RECV fl- III1
(4) MPI_REDIJCEALL
(5) I_GAiIER
JI1
Fig. 1.2 Operaciones globales de MPP.
1. MPI_BCAST
función que permite realizar una comunicación ytransmisión de mensajes mediante broadcast desde el proceso raíz hacia el resto de procesos que forman parte del sistema. El resto de procesos invocan la misma función pero indicando que el proceso raíz es el mismo que envió el primer broadcast.
2. MPI_SCATTER
esta función permite distribuir la información desde elproceso raíz hacia el resto de procesos. Parecido al funcionamiento de la función anterior pero este distribuye los datos de un buffer hacia otro
buffer secuencia¡ mente.
3. MPI_SEND
yMPI_RECV
permite enviar y recibir datos entre procesosvecinos estas funciones no permiten enviar datos a varios procesos al mismo tiempo por lo que generalmente cuando se quiere distribuir datos en ambientes con múltiples procesos, estas dos funciones son remplazados por las funciones BCAST y REDUCE para enviar y recibir datos respectivamente.
4. MPI_REDUCE
Con esta función podemos realizar una operación dondeMP! (\íessage Passing Interface)
Para que esta función pueda realizar operaciones, MPI define algunas
operaciones básicas.
•
MPI_MAX
(máximo).
•
MPI_MIN
(mínimo).
•
MPI_SUM
(suma).
•
MPI_PROD
(producto).
•
MPI .LAND
(and lógico).
•
MPI_BAND
(and bit a bit).
•
MPI
...
LOR
(or lógico).
•
MPI_BOR
(or bit a bit).
•
MPI_LXOR
(xor lógico).
•
MPI_BXOR
(xor bit a bit).
Esta operaciones son pasadas por parámetro a la función
REDUCE,
la
función
ALLREDUCE
permite hacer un
REDUCE
seguido de BCAST.
5.
MPI_GATHER
esta función hace una recolección de datos en el proceso
raíz desde todos los procesos que pertenecen al mismo comunicador,
estos datos en el proceso raíz se acumulan en un buffer de forma
consecutiva.
"El uso de las operaciones
SCATTER
y
GATHER
para transferir entradas y
salidas de datos es particular y simplemente conveniente. Pero, para
resolver problemas extensos, aparecen las limitaciones de almacenamiento
que alertara el acumulamiento de datos i/o en un solo proceso"6.
1.6. PROGRAMACIÓN MODULAR
En un sistema de paso de mensajes, también se puede realizar
programación modular, esto significa que se puede crear comunicadores en
tiempo de ejecución, cada grupo de comunicadores, realizan un trabajo
común y se comunican entre ellos.
Cuando se comunican varios procesos con uno al mismo tiempo, por ejemplo
todos los procesos quieren comunicarse con el proceso raíz, el orden de
llegadas de los mensajes enviados desde dos procesos A y B hacia un tercer
&IPI (\[essage Passing Interface)
proceso C, no esta definido. Pero, MPI garantiza que dos mensajes enviados
desde un proceso A, hacia otro proceso B, llegaran en el orden en que
fueron enviados.
Pero este problema se resuelve con un parámetro dentro de las funciones de
comunicación, con un parámetro
tag
el cual especifica la fuente de envío, y
así puede identificar que proceso se comunica con quien.
Para realizar operaciones conjuntas de comunicación, MPI siempre especifica
un comunicador. Este comunicador identifica un grupo de procesos que son
parte del proceso y contexto de comunicación en el cual ocurre.
Un grupo de procesos permite que un subconjunto de procesos puedan
comunicarse entre ellos mismos usando identificadores locales de procesos y
ejecutan operaciones de comunicación colectivas sin meter a otros procesos
de otros grupos.
MPICOMM_WORLD
09 S
groupl group2
09(9
1
Fig. 1.3. Comunicación modular7.
Para crear y manejar grupos de comunicadores dentro de un sistema MPI, el
estándar de MPI provee algunas funciones básicas para poder manejar estos
grupos de proceso.
MPI_COMM_DUP:
Función que permite crear un nuevo comunicador,
conteniendo el mismo número de procesos que un comunicador anterior que
JIPI (\íessage Passing Interface)
se especifica en el parámetro pero tiene un contexto nuevo para asegurar
que las comunicaciones generadas en otro grupo no sean confundidas.
MPI_COMM_SPLIT:
Función que permite crear un nuevo comunicador,
conteniendo solo un subconjunto de proceso del grupo de procesos. Estos
procesos pueden comunicarse entre ellos sin tener conflictos con otros
sistemas concurrentes
MPI_INTERCOMM_CREATE:
Función que permite construir un
comunicador interno (intercomunicador), el cual enlaza procesos de dos
grupos.
MPI_COMM_FREE:
Esta función permite liberar un comunicador creado al
usar las funciones anteriores.
1.7. ESPECIFICACIONES DE MPI.
MPI provee algunas especificaciones en su estándar para cualquier
implementación que se desee realizar y para el momento que las funciones
son utilizadas.
• Los nombres de las funciones deben tener el prefijo de MPI, seguido de
un guión bajo y la primera letra del nombre de la función en mayúsculas
ejemplo:
MPI_Send.
• Los valores de los estados de una función para saber si se ejecutó
correctamente son retornados como número enteros donde: 1 significa
una ejecución satisfactoria y O una ejecución con errores o problemas en
su ejecución.
• El valor de retorno para una ejecución exitosa es MPISUCCESS, esta
función permite revisar si una función se ejecutó satisfactoriamente,
provee los mismos números para determinar la validez de la ejecución.
• Todas las constantes de MPI deben estar escritas con letras mayúsculas.
MP! (' [essage Passing Interface)
Los parámetros IN son pasados por valor.
Los parámetros OUT e INOUT son pasados por referencia
• MPI presenta sus propios tipos de datos que están definidos de la
siguiente manera:
TIPOS MPI
MPI_CHAR
M PI_SHORT
M PI_I
NT
MPI_LONG
MPI_UNSIGNED_CHAR
MPI_U NSIGNED_SHORT
MPI_UNSIGNED
MPI_UNSIGN ED_LONG
M PI_FLOAT
MPI_DOUBLE
MPI_LONG_DOUBLE
M PI_BYTE
TIPOS C EQUIVALENTES
signed char
signed short mt
signed mt
signed long mt
unsigned char
unsigned short mt
unsigned mt
unsigned long mt
Float
Double
long double
Sin equivalente
MP! (\íessage Passing interface)
CONCLUSIONES.
• MPI (interfaz de paso de mensajes) es un estándar de programación paralela, que permite realizar programas multitarea que se pueden ejecutar en un cluster de máquinas conectadas y configuradas entre si.
• La forma que permite ejecutar programas en distintas máquinas, es creando un determinado número de procesos que se distribuyen equitativamente en cada nodo del cluster.
• El estándar cuenta con funciones previamente construidas que permiten la comunicación entre máquinas y procesos que se levantan en cada nodo del cluster.
MP! (\[essage Passing Interface)
CAPITULO II
OBJETIVOS
• Conocer implementaciones de MM que han sido desarrolladas.
-41P! (\íessage Passing Interface)
2.1 INTRODUCCIÓN.
Existen varias implementaciones libres de MPI, que permiten trabajar en entornos distribuidos, con herramientas propias, haciendo más fácil el lanzamiento, seguimiento y tratamiento de procesos, tales implementaciones se pueden descargar directamente desde la Web, algunas de estas son: MPICH, MPICH-2, MPICH-G2, MPICH-V1, etc.
Siguiendo el objetivo planteado para este capítulo, se va ha realizar una evaluación de cada una de las implementaciones para conocer sus beneficios y limitaciones, todo esto para encontrar una implementación adecuada que permita trabajar en la capacidad del grupo de desarrollo de software (GDS) de la UTPL.
La implementación que resulte más adecuada para trabajar en el GDS, será analizada para comentar sus beneficios, limitaciones y configuraciones que se realizó al momento de instalar y manejar, posteriormente en esta investigación, ésta implementación servirá de base para definir estándares de programación paralela para el GDS.
2.2 LA IMPLEMENTACIÓN LIBRE DE MPI, MPICH.
La implementación libre MPICH brinda amplias herramientas que permiten manejar mas fácilmente los programas, también permite hacer un seguimiento de un proceso que es iniciado en un sistema de cómputo MPI, con herramientas gráficas y/o herramientas de líneas de comandos, esta herramienta se puede instalar en la mayoría de sistemas operativos actuales tanto Windows como Linux
Esta implementación también provee librerías dinámicas que permiten importar funciones en un programa tanto para C, C++ y FORTRAN. Las cuales se pueden llamar desde cualquiera de los compiladores.
MP! (\íessage ['assing Interface)
ejecutan en cada una de las máquinas, con una configuración se une a todas
estas máquinas para que formen un solo ambiente de ejecución.
2.2.1
CARACTERÍSTICAS.
• Provee implementaciones de MPI para C, C++, FORTRAN.
La
herramienta provee librerías construidas para la utilización de MPI
con estos lenguajes, las funciones MPI están ya construidas y se
utiliza desde estos lenguajes.
• Programas MPMD.
Permite la construcción y ejecución de
programas paralelos donde cada proceso no necesariamente
realice la misma tarea, así cada proceso puede hacer una tarea
diferente dentro de un mismo programa.
Incluye componentes para un ambiente de programación
paralela.
La herramienta provee funciones desarrolladas que
permiten la comunicación entre diferentes máquinas y que el
resultado sea analizado en cualquier de las máquinas.
• Logs basados en la interfaz MPI.
Los Logs son el resultado que se
obtiene cuando se ejecuta un programa MPI, estos Logs se
pueden guardan en un archivo para su posterior análisis.
• Herramienta de visualización del rendimiento paralelo (íumpshot).
Esta herramienta permite visualizar el rendimiento del programa
paralelo a través de los Logs que se generan.
• Ejemplos de grandes y pequeñas aplicaciones.
Provee de
aplicaciones de MPI construidas como ejemplo para brindar un
conocimiento de cómo se debe utilizar las funciones creadas por
el MPI.
2.3 LA IMPLEMENTACIÓN LIBRE DE MPI, MPICH-G2
MPICH-G2 es otra implementación libre de MPI que trabaja en ambientes
distribuidos de grid-computing ("una infraestructura que permite el acceso y
procesamiento concurrente de un programa entre varias entidades computacionales
MM íessage Passing Interface)
independientes" 9), esta implementación trabaja conjunto con Globus Toolkit® (un paquete de software libre utilizado para construir sistemas para grid) el cual permite conectar varias computadoras de arquitecturas diferente en un solo ambiente de ejecución.
Esta herramienta esta completamente diseñada y creada para trabajar junto con la herramienta Globus Toolkit®, por ejemplo, para lograr una comunicación con otra máquina el MPICH-G2 utiliza funciones especificas del globus.
2.3.1
CARACTERÍSTICAS.
• Necesita un ambiente de grid para ejecutar programas.
Un ambiente grid es el conjunto de máquinas que están conectadas entre si mediante una red, este ambiente debe estar previamente configurado.• Comunicación multiprotocolo.
Utiliza diferentes protocolos para comunicar un proceso con otro, pero automáticamente se comunica mediante TCP.• Trabaja junto con Globus Toolkit®.Utiliza
funciones especificas de globus para realizar trabajos comunes, por ejemplo el globus establece la comunicación entre las máquinas, esta comunicación es utilizada por el MPICH-G2 para enviar y recibir mensajes.• Componentes para programación paralela.
Provee funciones desarrolladas que permiten la comunicación entre diferentes máquinas.• Programas MPMD.
Permite construir programas con múltiple entrada de datos y múltiples procesos que no necesariamente realizan la misma tarea.• No es compatible con otras implementaciones de MPL
La implementación de MPI original ha sido modificada para esta herramienta, con la finalidad que trabaje junto con otraMM 0 íessage Passzng interface)
herramienta como es el Globus, por lo tanto programas que se han realizado usando este entorno será muy difícil que se puedan ejecutar en otro entorno.
2.4 LA IMPLEMENTACIÓN LIBRE DE MPI, MPICH-V1
MPICH-V es una implementación de MPI que se desarrollo con propósitos investigativos, es por eso que esta herramienta crea un librería nueva llamada
mpich-v,
una aplicación que se construye con esta librería llega a ser muy tolerante a fallos, pero tiene mejoras en funcionalidad.Para llegar a mejorar su funcionalidad la librería original de la versión de MPICH ha necesitado de algunos cambios es su estructura como por ejemplo: la biblioteca actual trabaja con redes de ancho de banda considerablemente grandes.
Esta implementación soporta y trabaja con grades cantidades de información que van de máquina en máquina ejecutándose para lograr una tarea en común, por lo que requiere de una gran infraestructura de hardware y un sistema de red controlable.
Esta implementación tiene varias versiones del mismo paquete, cada una tiene características propias que ajustan al tipo de red.
2.4.1
CARACTERÍSTICAS.
Trabaja con anchos de banda muy elevados.
La información que se traslada de una máquina a otra como un mensaje ocupa anchos de banda muy elevados dentro de la red, la comunicación es más rápida, pero si la red no esta preparada o no tiene un suficiente ancho de banda, puede que la comunicación se vuelva lenta.MP! 0
íessage Passing interface)• El cluster es una colección de nodos dentro de una LAN.
Los nodos
M cluster son máquinas configuradas con el software y
conectada a una red de área local (LAN).
• Trabaja con grids.
Esta herramienta también puede ejecutar
programas dentro de un sistema de grid, esto es posible ya que
MPICH-V no utiliza funciones de ninguna otra librería solamente la
que fue desarrollada en la creación.
• Programas MPMD.
Permite realizar programas paralelos con
entradas múltiples y ejecuciones también múltiples, un programa
puede realizar varias tareas distribuidos en procesos diferentes.
2.5 RESUMEN COMPARATIVO DE LAS IMPLEMENTACIONES.
Para determinar si una implementación presta más facilidades o no para
trabajar en las actuales posibilidades del área de desarrollo de software, se
realizó un cuadro comparativo con requerimientos propios del GDS, en la
tabla 2.1 se muestra el cuadro comparativo de las implementaciones antes
citadas para determinar con cual de ellas nos conviene trabajar.
CARACTERÍSTICAS
Lenguajes de
programación
Programas MPMD
API (ejemplos)
Logs
Infraestructura que
necesitan para ejecutar
programas
Compatibilidad con otras
implementaciones
MPICH
MPICH-
MPICH-V
G2
C++, C y
CCyC++
Fortran
Si permite Si permite
Si permite
Si
Si
No
Si
Cluster
Grid
Grid o cluster con
ancho de banda
muy grande
No No
OTRAS CARACTERÍSTICAS
Sistema operativos
Windows,
Linux
Windows, Linux
Linux
[!PI (
íessage Passing Interface)administrativas
Dependencias
NingunaGlobusLibrería propiampich-v
TABLA 2.1. Criterios de evaluación de implementaciones MPI.
La implementación que se escogió para realizar la presente investigación es la MPICH, la cual se ajusta más a los requerimientos del GDS y a las posibilidades de implantación, considerando como aspectos importantes de evaluación para escoger: el sistema operativo Windows, cluster pequeño, ancho de banda menos a los lOOMb/s y herramientas que permitan administrar los procesos iniciados dentro del cluster.
Cabe destacar que cada implementación esta realizada para un ambiente de ejecución propio, cada una de estas trabajan bien para la arquitectura de software y/o de hardware para el que fue construido.
Esta implementación escogida se ajusta al entorno que presenta actualmente tanto en hardware como en software el GDS, con el fin de que ayude de mejor manera a conseguir sus objetivos, se opta por utilizar esta implementación con sus respectivas herramientas.
A continuación se realiza un análisis de las configuraciones que se hizo a esta implementación y sus herramientas para trabajar con ella.
2.6 ESTUDIO DE LAS HERRAMIENTAS DE MPICH Y CONFIGURACIONES
PARA EL ENTORNO DE DESARROLLO DEL GDS.
MPICH como se dijo anteriormente es una implementación libre de MPI. La cual posee librerías y herramientas que permiten programar y ejecutar programas en paralelo.
MPI 0
íessage Passing Interface)
INSTALACION DE LA HERRAMIENTA PARA EL AMBIENTE DEL GDS.
La instalación de esta herramienta es relativamente fácil, solo se debe seguir todos los pasos que nos presenta el manual de instalación, para ver una guía de instalación completa, diríjase al anexo 10 manual 1 y seguir todos los pasos dados en este manual, para que esta implementación funcione correctamente.
La herramienta se instala de manera rápida y sencilla, pero para poder instalar se debe tener un usuario de sistema operativo con clave, tener permisos de instalación de programas en la máquina y también poseer permisos del antivirus para que las herramientas instaladas y el proceso que permite comunicar las máquinas funcionen correctamente.
Una vez instalado el paquete presenta varias herramientas que permiten configurar el cluster de máquinas, iniciar una tarea dentro del cluster, manejar procesos que han sido iniciados, etc. Esta herramienta facilita también la visualización de resultados mediante una interfaz gráfica.
Para poder tener un criterio general del funcionamiento de cada una de las herramientas a continuación se va a describir brevemente cada una de ellas que son parte del paquete MPICH:
2.6.1 MPD.
MPD es el nombre que recibe el proceso (demonio) cuando se instala la herramienta MPICH, este proceso se encarga de escuchar las peticiones de envío o recepción de mensajes para que luego el procesador se encargue de ejecutarlos.
Este proceso se debe instalar y configurar adecuadamente para que funcione correctamente, para tener una guía completa de instalación diríjase al anexo 10 manual 2 y seguir todos los pasos indicados en este.
2.6.1.1 OPCIONES DEL MPD.
MP! (\íessage Passing Interface)
otra manera de manejar el proceso es desde el administrador de
procesos de Windows.
•
Instali:
con esta opción se instala el servicio MPD en la
máquina especificada.
•
Remove:
esta opción permite quitar el servicio MPD
definitivamente de la máquina especificada.
•
Console:
esta opción permite abrir una consola donde se
puede ver la configuración del servicio MPD.
•
Start:
Permite levantar el servio en la máquina
especificada una vez que fue instalado.
•
Restart:
Permite reiniciar el servicio en la máquina, lo
detiene y luego lo inicia.
•
Stop:
Permite detener el servicio en la máquina.
CONFIGURACIÓN DE UN MPD PARA EL AMBIENTE DEL GDS
Como el demonio MPD se instala automáticamente junto con las
herramientas y librerías que nos brinda MPICH, se debe hacer unas
configuraciones que son esenciales para no tener problemas al momento
de lanzar procesos en un ambiente distribuido.
1. Desinstalamos el servicio con la opción REMOVE que brinda la
herramienta [mpd - removeJ.
2. Volvemos a instalar el servicio con un dominio de usuario y una
contraseña que es el mismo del usuario del sistema operativo,
para que al momento de recibir un proceso para ser ejecutado se
levante como proceso de un usuario.
i%fPI (\íessage Passing Interface)
operativo para asegurar que el proceso se inicie como parte del usuario. Si el usuario y contraseña del MPD no es igual al del sistema operativo se lanzará un error de inicio de proceso.
La opción que permite dar un dominio de usuario al MPD, es
account
que se le asigna al momento de instalar(mpd insta!!
-account nombre_ma quina \usuario password]"10.
E3EMPLO EN EL AMBIENTE GDS:
Mpd -insta!! -account phantom\an gel my_pasword
Este tipo de instalación se debe realizar en cada máquina que pertenece al cluster, en cada una de las máquinas se debe instalar el MPD con sus respectivos dominios de usuarios y contraseñas
Cuando se configura cada uno de los nodos del cluster los demonios de cada máquina quedan listos para recibir y enviar cualquier mensaje dentro del cluster y ejecutar la tarea iniciada.
2.6.2 MPIRUN PARA MPD.
Dentro de las herramientas de MPICH existe la herramienta MPIRUN de línea de consola, que permite iniciar procesos dentro del cluster.
En la tabla 2.2 se puede observar la forma que mpirun lanza procesos en un ambiente distribuido utilizando opciones propias.
• mpirun [-mpirun options] configfile [args ..
.1
• mpirun -np #processes [-rnpirun options] executable [args ..
.1
TABLA 2.2 Opciones de mpirun11
10 The ch nt device for workstations and clusters of Microsoft Windows machines: David Ashton, William Group, and Ewing Lusk: Tomado de: Manual de usuario de MPICH para windows.
MP! ( íessage Paszng Interface)
Al momento de ejecutar el comando anterior la herramienta inicia la
ejecución del programa con el número de procesos especificados en la
opción, los procesos serán lanzados en cada uno de los nodos del cluster
siguiendo el algoritmo Round Robin (distribuye un proceso
equitativamente a cada nodo dependiendo del número de procesos);
2.6.2.1 CONFIGURACIÓN PARA MPIRUN.
MPIRUN utiliza un archivo de configuración donde se guarda el
nombre de la máquina y el número de procesos máximos que se
pueden lanzar en el, cuando se tiene un archivo de configuración no
es necesario especificar el número de procesos al momento de iniciar
la ejecución del programa.
Al momento de iniciar la ejecución de un programa MPIRUN realiza
una consulta al archivo de configuración, y ya sabe dónde debe iniciar
un proceso y el número de procesos que puede permitir cada
máquina.
En la tabla 2.3 se muestra el formato que debe tener un archivo de
configuración.
exe c:\somepath\myapp.exe
OR \\host\share\somepath\myaPP.eXe
[args argi arg2 arg3 . . .1
{env VAR1=VAL1 !VAR2 =VAL2 1... IV?Rn=VALn]
[dir drive: \some\path]
[map drive: \\host\share]
ho st s
hostA #procs [path\myapp.exe]
hostB #procs [\\host\share\somep ath \mY aPP 2 .exe]
hostC #procs
TABLA 2.3 Formato del archivo de con figuración12.
.
Todo lo que esta entre [ ] es opcional no se incluyen los símbolos [ ]
MP! (1 /essage Passing Interface)
• Las dos primeras líneas indican la ruta donde se encuentra el programa ejecutable.
o El carácter # sirve para poner un comentario dentro del archivo.
EJEMPLO EN EL AMBIENTE GDS:
exe c:\temp\myapp.exe
hosts
PHANTOM 1
URPOD3MCARRION 2
En el ejemplo anterior, se muestra una configuración de archivo, en la primera línea esta la ruta del programa ejecutable, después la palabra host indicando que a continuación están los nombres de las maquinas donde se van a lanzar procesos, en las líneas posteriores se escribe el nombre de la máquina seguido del número de procesos máximos que pueden ser iniciados en cada máquina.
2.6.2.2 OPCIONES DE MPIRUN
La herramienta MPIRUN tiene algunas opciones que se puede utilizar al momento de lanzar procesos dentro del ambiente distribuido.
En el anexo 1 se muestra algunas opciones de MPIRUN que son más utilizadas para iniciar procesos en un cluster con la opción mpirun.
2.6.3 LA HERRAMIENTA GUIMPIRUN.
La herramienta GUIMPIRUN permite lanzar procesos en un cluster al igual que la herramienta MPIRUN, solo que esta herramienta permite configurar, iniciar y especificar el número de procesos en un entorno grafico.
MM (\fessage Passing Interface)
Esta herramienta también permite visualizar el resultado de la ejecución
del programa, también se visualiza los errores producidos durante la
ejecución del programa, con colores asignados para cada proceso, consta
de 32 colores que distribuyen según el algoritmo Round Robin.
CONFIGURACIÓN PARA EL ENTORNO GDS.
FIGURA 2.1 Herramienta GUIMPIRUN.
En la figura anterior 2.1 se muestra la interfaz grafica de la herramienta
GUIMPIRUN que permite escoger un programa e iniciar la ejecución en
un cluster, permitiendo escoger las máquinas donde se van a iniciar los
procesos y el número de procesos con el que se va ha ejecutar el
programa.
1. En el apartado 1 de la herramienta, permite al usuario escoger el
ejecutable del programa que posteriormente se ejecutará con el
número de procesos que se indique.
2. En este apartado los botones hacia arriba y hacia abajo permite
definir el número de procesos que van a ser iniciados para esta
aplicación.
MM 0 [essage Passing Interface)
4. En esta parte de la herramienta se encuentra la lista de máquinas que se configuró con la herramienta MPICONFIGURE, se puede escoger máquinas específicas, si queremos que el programa se ejecute solo en ellas, o con la opción
Any hosts
permitimos que el programa se ejecute en todas las máquinas disponibles en el cluster, la opciónhosts
permite escoger uno o varias máquinas donde se van a iniciar los procesos, el botónReset
recoge las nuevas configuraciones hechas en el MPICONFIGURE, también con la opción y se puede añadir una nueva máquina directamente, pero es recomendable hacerlo con la herramienta MPICONFIGURE.S. En esta parte de la herramienta permite visualizar los resultados de la ejecución del programa y/o avisos de alguna situación que sucedió durante la ejecución del programa.
2.6.3.1 OPCIONES AVANZADAS.
En la herramienta GUIMPIRUN existe un botón denominado opciones avanzadas, la cual permite realizar configuraciones que se utilizan para empezar la ejecución de los procesos, es similar a las opciones que presenta MPIRUN, solo que estas se pueden configurar gráficamente y no requiere crear ningún archivo, la herramienta lo hace sola, al momento de iniciar los proceso recoge y toma en cuenta estas configuraciones.
CONFIGURACIÓN PARA EL ENTORNO GDS.
Se configuró algunas opciones necesarias, que permiten agilidad y entendimiento de cómo se ejecuta un proceso por ejemplo: que la herramienta permita ejecutar programas no necesariamente que contengan funciones MPI, así podemos enviar a ejecutar cualquier programa sólo que el número de procesos será 1 y se ejecutará en la máquina actual, también que la herramienta permita hacer un seguimiento de los procesos iniciados en la máquina.
JIPI (\
[essage Passing Interface)
C.
- Wxtfl.eck4y ,,..
FIGURA 2.2. Opciones avanzadas de GUIMPIRUN.
2.6.4 LA HERRAMIENTA MPICONFIGURE.
La herramienta MPICONFIGURE permite configurar maquinas para el cluster donde se iniciará la ejecución de programas MPI.
Para que la máquina pueda ser visualizada en esta herramienta, todas estas máquinas de los nodos del cluster deben tener instalado el demonio MPD perfectamente configurado con el usuario y contraseña.
Una vez configurado el cluster esta herramienta crea un archivo similar que el archivo de configuración de MPIRUN, además permite hacer un control de las máquinas en tiempo de ejecución.
CONFIGURACIÓN PARA EL ENTRONO GDS.
Para correr una aplicación en diferentes máquinas sin tener que especificar los nombres de las maquinas en el archivo de configuración.
MP! ('íessage Passing Interface) un registro, este registro es utilizado por MPIRUN o GUIMPIRUN posteriormente para iniciar los procesos. En la figura 2.3 se muestra la herramienta de configuración MPICONFIGURE con todas las opciones que presenta para configurar un cluster.
5L4C0 he iç3c . ecrBOore PFFhIJTCM
Erer he par:vcod ccrç,#ct o tenoce red,
del
roel Ln:eo e.:tcrec ou'our lcq,rF oF: &.FIr.»d OtOirnIrce. oItençI Fo teCoL lnaln&e.ok drie rorrgrc ci le cuierri decolorO
Orno rletu, Ld rOroer ;,r,,en?t cren
Opçde: '0 iccoct* c.rh,
00101! 000 VFJJ e000Fnorro ceoe orn:: tire CFIt CO0O
IFrIrO,rItOO1 000111 oc Loo
eco-dIc h:odeoe/ plcfl he
topeO ihe nerocted ocororo
e..
cpo- mlle Ølnjoto ir.:o oeriy
./lfl/OflhOi t.F'1r,
F-hJT )il
F:Jtt1c.cJ1r It)F F:ior. L ci
lo fl. 4hhTJhI el nl oto: c) oc'rr: ore:ti) OK
FIGURA 2.3. Herramienta MPICONFIGURE.
En la herramienta de configuración MPICONFIGURE, se ve claramente especificado 3 secciones que sirven para buscar, añadir y configurar hosts dentro del cluster. En la sección 1 de la figura 2.3 existe un cuadro de diálogo que necesita ser llenado por nombres de máquinas donde el MPD fue instalado, se puede usar el botón seleccionar o escribir el nombre de la máquina directamente en el cuadro de diálogo para crear la lista.
• Con botón
ADD
se agrega un nombre de host que se escribe en el cuadro de texto a la lista de hosts.WU
JIPI (\fessage Passing Interface)
En la sección 2 de la figura 2.3, presenta una la lista de opciones que deben ser configuradas antes de que los nodos puedan iniciar procesos en ellos, estas configuraciones aplicadas causan efecto a todos los nodos enlistados para el cluster, que son presentados en un cuadro de diálogo por encima de estas opciones.
Para conocer que función realiza cada una de las opciones que presenta la herramienta diríjase al anexo 2 que presenta una detallada explicación de cada una de las opciones.
En la sección 3 de la figura 2.3, se visualiza las mismas opciones que en la sección anterior con la excepción de que las configuraciones que se apliquen en esta sección solo afectarán a la máquina que se señaló previamente de la lista de maquinas.
Para realizar un cambio de configuración a una determinada máquina se debe señalar la máquina luego se debe chequear el cuadro de
show_confugation
situada en la parte superior izquierda de laherramienta, chequear la opción que se quiera cambiar e ir realizando los cambios en las opciones que sea necesario, luego para que los cambios tengan validez, con el botón
modify
se aplica los cambios pertinentes a la máquina, cabe recalcar que estos cambios serán borrados cuando se aplique los cambios generales a todas las máquinas.Con el botón
Ok
asignamos todas las configuraciones a los hosts y estos cambios se guardan en un archivo que se será utilizado luego por otras herramientas y con el botóncancel
deshacemos toda configuración hecha en esta herramienta y el archivo queda como antes estuvo.2.6.5 LA HERRAMIENTA MPIREGISTER.
-ç MP! (\ Iessage Jassing Interface)
En la tabla 2.3 se observa las opciones de la herramienta, esta herramienta funciona en un entorno de línea de comandos.
• MPlRegister
• MPlRegister -remove
• MPlRegister -validate [-nocache -host h -port p -phrase x]
TABLA 2.3 Opciones de MPIREGIS TER.
La opción MPIREGISTER sin ninguna opción, abre una consola donde permite guardar la clave de usuario y contraseña.
• Para que la clave de usuario y contraseña se guarden adecuadamente se debe seguir el siguiente formato
[Nombre_ma quina]\nombre usuario.
• Seguidamente presentará un dialogo pidiendo el ingreso de la contraseña, se debe especificar dos veces.
CONFIGURACIONES PARA EL AMBIENTE GDS.
Para tener guardado nuestro usuario y contraseña que permita trabajar con las demás herramientas, se configuró cada una de los nodos de la siguiente manera:
E) EM PLO.
MPIREGISTER PHANTOM\ANGEL Mi—contraseña Mi—contraseña
Con la opción MPIREGISTER -REMOVE se borra la información del registro.
MP!
(\[essage Passing Interface)
"Las opciones
hosts y port
son opcionales y se refieren donde esta localizado el MPD, si no se especifica estos parámetro el host, el puerto por defecto del MPD y phrase los parámetro por defecto son utilizados. La opción-nocache
ignora cualquier cache depositado por el usuario para la validación, la validación será mas lenta pero mas exacta"`.2.6.6 LA HERRAMIENTA UPDATE TOOL.
Las versiones de MPICH van cambiando con frecuencia por lo tanto la herramienta UPDATE TOOL permite actualizar las librerías (dlls) de MPICH a todos los nodos del cluster sin tener que actualiza necesariamente en cada maquina, también permite actualizar desde un archivo descargado o directamente desde la web.
CONFIGURACIONES PARA EL AMBIENTE GDS.
En la figura 2.5 se puede visualizar la herramienta que permite hacer estas de librerías MPICH.
Se he heeto 1. opdete by adioç theo lo thehe F000 hee(no voeo cheeh)
PHANTCM
L1
Sehet hecte UpdeteUpdfto9 Upioto*
UADMARAION
CKÇoceI
mpd CeefleChe
1.2.5Jun 82003dotoub p Erte the c~* of aule,
mpd adnjn ç.iuileges en he remotO hoste
1.2.5Juer 803
detot pecuptoaneccurL
IJpe rroh dl, trob
Seoce ot 1h, eu opich dfto
Re
• 1h11 hllftrr.antQobflr,/ntbhedos/rhe AML
LJpdho mpd rejal vereon
So col he vero mçd neo Fle
• URL ftp //ftantoov/h1b/nWnbetm/rrdeoe ANL
FIGURA 2.4. Herramienta UPDATE TOOL
Para empezar la actualización primero se debe crear una lista de maquinas, esta lista se crea igual que en la herramienta MPICONFIGURE,
Tomado de : httpJ/www-MP! (\[essage Passing Interface)
con los botones
add
o
select,
buscando las maquinas en la red o
directamente agregando el nombre desde el cuadro de dialogo.
• ADD, agrega un nombre de host a la lista desde el cuadro de
texto.
o SELECT, abre una ventana que permite escoger hosts desde un
entorno de red.
Para conocer más de las opciones que presenta esta herramienta diríjase
al anexo 3 donde se muestra detalladamente las funciones de cada una
de las opciones que presta la herramienta.
2.6.7 LA HERRAMIENTA JOB MANAGER TOOL.
Para realizar un seguimiento a un proceso que se ha iniciado, MPICH
presta esta herramienta, que permite ver en donde se inicia un proceso,
que identificador tiene el proceso, directorio del archivo que se esta
ejecutando, usuario que lanzó los procesos, si los procesos están en
ejecución o no y otro tipo de información adicional que permite tener una
visión clara que esta pasando con los procesos.
CONFIGURACIÓN PARA EL AMBIENTE GDS.
En la figura 2.5 se ve que herramienta presenta la información de una
de las tareas que se envió a ejecutar en un cluster, esta herramienta
presenta la información de los procesos que se inició en una máquina
específica.
MM ( fessage Passing Interface) .:L
onnectcctwecUoaIobhost OK
Jobo:AeheohRemove Cancel
2006.07.31d0h.25m.59s> angel@PHANTOM.8: FINISHED
Job:'deta
Ocmd C.\?Togam Fes\MPiCbripieae Od - C:\Progin FeMPlO-lmpcfbá,\
Oenv MPlD4_JDBlDPHANTOM.MPlCH_NPROC2NPH_RO0TH0ST72.16.3l Ohoot .172.1631.163
op - 1752
1 cnxPiog&nam PI 1 d C:\Pogam Fdes\MPICH\mpd\bin\
1env = It
1 h - URPOD.1CAFtRION 1 pid - 648
rroc 2 state - RUNNING
angel
FIGURA 2.5 Herramienta Job Manager
MP! (. íessage Passing Interface)
CONCLUSIONES.
• La implementación MPICH presta varias herramientas que viene junto en el mismo paquete, los cuales permiten configurar un cluster y hacer un seguimiento adecuado de un proceso, también da la oportunidad de ser instalado en un sistema operativo Windows y lo mas fundamental permite la ejecución de programas en un cluster no necesariamente grande ocupando el ancho de banda disponible, por estos motivos esta implementación fue escogida para realizar la presente investigación.
• MPICH presta herramientas de fácil uso y manejo, que permiten crear, configurar y usar el cluster de maquinas que se conectan entre si a través de una red y un software (demonio) en cada maquinas, además brinda también otras herramientas que permiten iniciar, detener y hacer un seguimiento de un proceso dentro del cluster.
MM ( íessage Passing Interface)
CAPITULO III
OBJETIVOS
MM (\[essage Passing Interface)
3.1 INTRODUCCIÓN.
Implementar un estándar de programación paralela para el grupo de desarrollo de software basado en MPI es el objetivo principal de este capitulo donde se describirán las formas y herramientas que se utilizó para lograr este objetivo.
El lenguaje de programación C# es utilizado en la actualidad por el GDS (grupo de desarrollo de software) para realizar la mayoría de sus proyectos, por lo tanto se ha decidido crear una implementación (estándar) de MPI para este lenguaje, como el sistema MPI es un sistema complejo de múltiples funciones se decidió implementar este estándar basado en un estándar ya construido.
Para poder hacer este tipo de implementación el ECMA (una asociación de la industria fundada en 1961, dedicado a la estandarización de la información y de los sistemas de comunicación.) ha estandarizado C# como lenguaje de programación y el Common Language Infrastructure (CII), para realizar aplicaciones de alto rendimiento en la plataforma .net.
Una de las aplicaciones de alto rendimiento es precisamente crear aplicaciones que utilicen la interfaz de paso de mensajes MPI que operen con el lenguaje de programación C# y el CLI.
Para realizar una implementación de MPI en .net en la siguiente investigación se propone dos capas de tratamiento, una capa de bajo-nivel que es donde se hace un mapeo de funciones, constante y tipos de datos propios de MPI que ya existen el las implementaciones de MPI en C, y otra capa superior alto-nivel que aprovecha las modernas características del lenguaje de programación C# y también las características de la programación orientada a objetos OOP.