PVM (Parallel Virtual Machine, Máquina Virtual Paralela)
PVM significa “Parallel Virtual
Machine”, es relativamente nuevo ya que sus inicios se remontan al verano de
1989 en el Oak Ridge National Laboratory.
PVM consiste
en un software y un conjunto de librerías, que permiten establecer una
colección de uno o más sistemas de computación, con el fin de poder integrar
dichos sistemas en un esquema de una sola máquina virtual (PVM: Parallel Virtual Machine - Máquina
virtual en paralelo).
PVM opera sobre diferentes plataformas de UNIX y también de Windows 9x,
la cantidad de plataformas en las que puede correr el ambiente de PVM es muy
variada y abundante. PVM puede establecerse en cualquier esquema de red
heterogénea, sobre todo en el ambiente de Internet, como se puede apreciar
en la gráfica anterior.
PVM brinda rutinas en lenguajes C y en Fortran para
procesos como paso de mensajes asíncronamente y para control de procesos;
además de ofrecer un paralelismo escalable, entre otras muchas ventajas que ofrece.
A pesar de que PVM no es un estándar, es sumamente
popular para realizar y desarrollar aplicaciones científicas complejas que
requieren un esquema de programación en paralelo, dada su compatibilidad en
sistemas operativos es sumamente portable y fácil de instalar, además de que
PVM consiste en un esquema pequeño de código de computadora.
Ventajas
Estaciones de trabajo.
|
Computadoras en paralelo.
|
Sun3 SPARCstation MicroVax DECstation DEC Alpha IBM RS/6000 NEXT Silicon Graphics IRIS HP 9000 DG Aviion 386/486 Linux boxes IBM RT 386/486 BSD386 boxes |
Intel Paragon Thinking Machines CM5 Sequent Symmetry Intel iPSC/860 Thinking Machines CM2 Alliant FX/8 Encore 8800 MIPS 4680 Cray YMP and C90 Fujitsu VP2000 Convex IBM 3090 KSR-1 IBM-SP1 |
- Paralelismo Escalable.- PVM
permite definir cuantos procesadores puede utilizar una aplicación, en
caso de que falten procesadores, PVM realiza el trabajo en menos
procesadores, recurriendo a técnicas de procesamiento concurrente.
- Tolerancia A Fallas A Partir De Añadir O
Borrar Procesos Anfitriones (Host).
- Fácil De Instalar Y De Usar.
- Popular.- Es una de las librerias de paso de
mensajes más faciles y óptimas.
- Flexible.
- Esquema fácil de modificar y de
configurar/definir por la máquina virtual.
- Control arbitrario de dependencia de
estructuras. La aplicación decide:
- Donde y cuando producir o terminar las
tareas.
- Cuales máquinas se agregan o se remueven
desde la máquina virtual en paralelo.
- Cuales tareas se pueden comunicar y/o
sincronizar con otras.
- Puede incorporar casi cualquier computadora
que funcione bajo UNIX, (Obviamente con cuenta de acceso), para
incorporarla fácilmente al esquema de la máquina virtual.
Desventajas
·
- Desempeño.- Como PVM es un esquema heterogéneo de computadoras, dependiendo de la capacidad de procesamiento de las computadoras vinculadas al esquema de la máquina virtual, su desarrollo puede verse mermado o incrementado, según sea el poder de cómputo de las computadoras anfitrionas.
- Cuenta con un esquema no estandarizado.- PVM no es un estándar (como lo es MPI).
- Es algo deficiente en cuanto al paso de mensajes se refiere.
Configuración
Para
explicar este punto nos vamos a vasar en los sistemas operativos UNIX.
·
Cada ordenador debe de estar ejecutando el demonio pvmd
·
PVM requiere de cierta configuración para cada usuario. Es necesario
crear un archivo .rhosts en el
directorio HOME de cada usuario que quiera
ejecutar programas bajo PVM.
·
El archivo .rhosts debe contener una línea por cada ordenador que va formar parte de la máquina virtual. Además
debe incluir el nombre de usuario que se
utilizara en cada una de ellas.
Ejemplo:
maquina1
username1
maquina2
username2
maquina3
username3
maquina4
username4
·
Además, se debe crear el directorio pvm3/bin/LINUX en el directorio HOME
y colocar ahí los programas.
·
Para configurar la MV utilizamos el programa “pvm” en cualquiera de los ordenadores que forman parte
de la MV.
·
Nos aparecerá un promt donde podremos introducir comandos para
interactuar con la MV.
·
Los comandos más interesantes son: add/delete hostname: Añade/Quita el
ordenador con nombre hostname a la máquina virtual.
·
conf: Para ver la configuración actual.
·
ps –a: Para ver los procesos en ejecución en la máquina virtual.
·
quit: Para salir de la consola pero dejar la máquina virtual activa.
·
halt: Para detener la máquina virtual y salir de la consola.
Las tres librerías de PVM son las siguientes:
libpvm3.a.-
|
Esta librería
brinda una gran cantidad de rutinas escritas en lenguaje C. Esta rutina
siempre es requerida.
|
libfpvm3.a.-
|
Librería
adicional que se requiere en caso de que la aplicación escrita en PVM utiliza
código de Fortran.
|
libgpvm.a.-
|
Librería
requerida en caso de usar grupos dinámicos.
|
Las citadas libreras
contienen subrutinas sencillas que son incluidas en el código de aplicación
escrito en PVM. Proveen las herramientas suficientes como para realizar
acciones tales como el iniciado y borrado de procesos, el empaquetamiento, desempaqueta
miento y recepción de mensajes, sincronización vía barrera (synchronize via barriers) y
configuración dinámica de la máquina virtual.
Ejemplo
#include “pvm3.h”
main()
{
int tid,
msgtag, cc;
char
buf[100];
printf("i'm t%x\n", pvm_mytid());
cc =
pvm_spawn(”slave", (char**)0, 0, "", 1, &tid);
if (cc ==
1) {
msgtag
= 1;
pvm_recv(tid, msgtag);
pvm_upkstr(buf);
printf("from t%x: %s\n", tid, buf);
} else
printf("can't start hello_other\n");
pvm_exit();
}