Búsqueda personalizada

viernes, 25 de enero de 2008

Como Compilar y ejecutar programas con PVM

Antes de compilar se tendrá que comprobar que la PVM esta activa de la siguiente forma:

$$>$pvm

Una vez activada la PVM utilizaremos el comando quit para salir de esta.

Seguidamente se creará un archivo llamado Makefile.aimk que esta en la carpeta Examples en Pvm, que tendrá la siguiente estructura:

DEBUG =

SDIR = ..

BDIR = $(HOME)/pvm3/bin

#BDIR = $(SDIR)/../bin

XDIR = $(BDIR)/$(PVM_ARCH)

CC = gcc

OPTIONS = -g

CFLAGS= $(OPTIONS) -I$(PVM_ROOT)/include $(ARCHCFLAGS)

LIBS = -lpvm3 $(ARCHLIB)

GLIBS = -lgpvm3

LFLAGS= $(LOPT) -L$(PVM_ROOT)/lib/$(PVM_ARCH)

default: nombre_programa -master nombre_programa-slave

nombre_programa-master : $(SDIR)/ejer5-master.c $(XDIR)newli $(CC) $(DEBUG) $(CFLAGS) -o $@ $(SDIR)/ejer5-master.c $\backslash $

$(LFLAGS) $(LIBS) -lm

cp $@ $(XDIR)

nombre_programa-slave : $(SDIR)/nombre_programa-slave.c $(XDIR)

$(CC) $(DEBUG) $(CFLAGS) -o $@ $(SDIR)/nombre_programa-slave.c $\backslash $

$(LFLAGS) $(LIBS) -lm

cp $@ $(XDIR)

$(XDIR):

- mkdir $(BDIR)

- mkdir $(XDIR)

clean:

rm -f *.o nombre_programa-master nombre_programa-slave $(XDIR)/nombre_programa-master $(XDIR)/ nombre_programa -slave

Para compilar los programas fuentes únicamente se tendrá que hacer:

$$>$ aimk

En el caso de que se quiera borrar los código objeto:

$$>$ aimk clean

Una vez que tenemos los programas ya compilados para ejecutarlos se realizará lo siguiente:

$$>$ programa-master Numero de procesos

Instalacion Pvm

Bueno continuando con el tema de Pvm vamos a ver la instalación correspondiente

Se Descargo el paquete(http://rpm.pbone.net/index.php3/stat/4/idpl/2396522/com/pvm-3.4.3-4.i386.rpm.html) en formato fuente y .rpm y se instalo en todas las maquinas usando el comando.


rpm -ivh pvm-3.4.3-4.i386.rpm


Con esto se instalo en nuestro sistema el programa PVM y el compilador aimk , el paso siguiente fue configurar las variables de entorno agregando esto al fichero ~/bashrc


export PVM_ROOT=/usr/share/pvm3
export PVM_ARCH=LINUX
export PATH=$PATH:$PVM_ROOT/lib:$HOME/pvm3/bin/$PVM_ARCH
export PVM_DPATH=$PVM_ROOT/lib/pvmd
export PVM_RSH=/usr/bin/ssh
export MANPATH=$MANPATH:$PVM_ROOT/man


Donde PVM_ROOT es el directorio donde se instalo el programa PVM_ARCH representa la arquitectura del sistema en el que se intalo la herramienta en nuestro caso contamos con 2 arquitecturas distintas LINUX para la maquina intel (x86)y LINUXSPARC para las station.


Tambien es necesario hacer notar que por defecto PVM trabajo con conexión mediante rsh lo que se cambio a SSH mediante la cariable PVM_RSH.


Existe otra manera de cambiar la ultima opcion que consiste en cambiar antes de compilar el pvm el archivo ../pvm3/conf/LINUXSPARC.def, el cual es para cuando se compila el programa (cuando no haya el sistema de paquetes rpm), si es ese el caso primero hay que configurar las variables de entorno para que se pueda compilar sin problemas


Luego el siguiente paso fue ejecutar pvm y configurar algunos aspectos extras, desde pvm.

pvm>add con este comando agregamos la lista de maquinas que correran pvm como lo muestra la siguiente imagen (conf muestra las maquinas agregadas)




Luego en las maquinas se procedio a configurar el compilador aimk modificando el fichero Makefile.aimk con los siguientes cambios:

# $Id: Makefile.aimk,v 1.16 1998/11/20 19:46:41 pvmsrc Exp $

#

# Makefile.aimk for PVM example programs.

#

...

#

SHELL = /bin/sh

# CAMBIO 1

#PVMDIR = ../..

# se sustituye por

PVMDIR = /usr/share/pvm3/

#CAMBIO 2

#SDIR = $(PVMDIR)/examples

#se sustituye por

SDIR = $(HOME)/pvm3/examples

# CAMBIO 3

#BDIR = $(PVMDIR)/bin

se sustituye por

BDIR = $(HOME)/pvm3/bin

XDIR = $(BDIR)/$(PVM_ARCH)

CFLOPTS = -g

CFLAGS = $(CFLOPTS) -I$(PVMDIR)/include $(ARCHCFLAGS)

##### Need to select some architecture-specific libraries to link tasks

# The default setup is for workstations

### Select PVMLIB depending on architecture.

# For MPPs (PGON and AIX4SP2/SP2MPI) select:

# PVMLIB = -lpvm3pe

# For Workstations and shared memory architectures select:

# PVMLIB = -lpvm3

PVMLIB = -lpvm3


A continuacion se compila un prograama para chequear el correcto funcionamiento de la herramienta, y esto se hace mediante un ejemplo clasico el HolaMundo que viene en los ejemplos de PVM, se compila con aimk mediante el siguiente comando:

$ aimk hello

Luego con el comando spawn dentro de pvm iniciamos el subprograma hello como se ve en la imagen y el llamado a otra maquina en este caso se ejecuto desde Rocco y llamo a Keyra





Como paso final se creo el archivo pvm.hosts el cual contiene los nombre o en su defecto las Ip de las maquinas que se desean agregar al iniciar el demonio pvmd, el cual se ejecuta al inicio con el comando add


$pvm>add pvm.hosts