• No se han encontrado resultados

Investigación de un estandar de programación para lela para el grupo de desarrollo del software basado en MPI

N/A
N/A
Protected

Academic year: 2017

Share "Investigación de un estandar de programación para lela para el grupo de desarrollo del software basado en MPI"

Copied!
123
0
0

Texto completo

(1)

7 E5/5

u

L) 1<)

(o

$ '-'e? /

j- $g

5o1ieJir ,.p np;

(2)

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

(3)

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.

(4)

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.

(5)

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".

(6)

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.

(7)

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í.

(8)

~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... 2

1.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... 15

2.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

(9)

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 Al

1... 

Pl L#L.L rtL¼ Jr\J. 1 iI'.J I_I LL.DTTM( M l 1 TI(I ¡A1 IJ'.JfJ_ r

(10)

MPI (íessage Passng Interface)

CAPITULO V

Conclusiones y recomendaciones.

5.1. CONCLUSIONES . ... . ... ... 73

5.2. RECOMENDACIONES . ... .. ... ....... 74

REFERENCIAS BIBLIOGRÁFICAS... ... . ... ... ... 76

(11)

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.

(12)

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.

(13)

rM4.

MP! [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.

(14)

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.

(15)

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.

(16)

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.

(17)

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

comm

comunicador (manejador [handie])

OUT

size

nú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

comm

comunicador (manejador [handle])

OUT

pid

identificador del proceso en el grupo del

comunicador (entero).

Envía un mensaje.

MPI_SEND( buf, count, datatype, dest, tag,

comm)

IN

buf

dirección del buffer a enviar (tipo x)

MPI_SEND

IN

count

número de elementos a enviar del buffer

(entero >= O)

IN

datatype

tipo de datos del buffer a enviar

(handle)

(18)

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 buffer

MPI_RECV

(entero >= O)

IN

datatype tipo de datos del buffer a recibir

(handie)

IN

source identificador del proceso fuente, o

M 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

MPI_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 clave 

MPI_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ón 

MPI_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

MPI_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.

(19)

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

(20)

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.

(21)

/Í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 y

transmisió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 el

proceso 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

MPI_RECV

permite enviar y recibir datos entre procesos

vecinos 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 donde

(22)

MP! (\í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

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

(23)

&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

(24)

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.

(25)

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

(26)

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.

(27)

MP! (\[essage Passing Interface)

CAPITULO II

OBJETIVOS

• Conocer implementaciones de MM que han sido desarrolladas.

(28)

-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.

(29)

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

(30)

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 otra

(31)

MM í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.

(32)

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

(33)

[!PI (

íessage Passing Interface)

administrativas

Dependencias

NingunaGlobusLibrería propia

mpich-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.

(34)

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.

(35)

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.

(36)

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.

(37)

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 [ ]

(38)

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.

(39)

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.

(40)

MM [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ón 

hosts

permite escoger uno o varias máquinas donde se van a iniciar los procesos, el botón 

Reset

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.

(41)

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.

(42)

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.

(43)

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 la

herramienta, 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ón 

cancel

deshacemos toda configuración hecha en esta herramienta y el archivo queda como antes estuvo.

2.6.5 LA HERRAMIENTA MPIREGISTER.

(44)

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.

(45)

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 Updete

Updfto9 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,

(46)

Tomado de : httpJ/www-MP! (\[essage Passing Interface)

con los botones 

add

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.

(47)

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

(48)

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.

(49)

MM ( íessage Passing Interface)

CAPITULO III

OBJETIVOS

(50)

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.

Figure

Fig, 1.1 Sistema de memoria distribuida1.
Tabla 1.1 Funciones básicas de MPI3.
Tabla 1.2 (Algoritmo) Envío y recepción de mensajes4.
Fig. 1.2 Operaciones globales de MPP.
+7

Referencias

Documento similar

Y tendiendo ellos la vista vieron cuanto en el mundo había y dieron las gracias al Criador diciendo: Repetidas gracias os damos porque nos habéis criado hombres, nos

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

Fuente de emisión secundaria que afecta a la estación: Combustión en sector residencial y comercial Distancia a la primera vía de tráfico: 3 metros (15 m de ancho)..

3 Serie de datos (año medio) de los modelos de simulación MPI y GKSS del Proyecto

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)