You are on page 1of 23

DEDICATORIA

“A nuestros padres por su apoyo


incondicional, así mismo a todos los que
de alguna u otra manera se esfuerzan
día tras día para lograr sus metas, a
ellos el presente trabajo.”
Procesamiento

INTRODUCCION

PVM significa “Parallel Virtual Machine”, es relativamente


nuevo ya que sus inicios se remontan al verano de 1989 en
el Oak Ridge National Laboratory. Es un software que
permite ejecutar aplicaciones paralelas distribuidas en
redes de ordenadores heterogéneos. PVM es, junto con MPI
“Message Passing Interface”, uno de los paquetes de
software más utilizados para implementar aplicaciones
paralelas.

PVM (Parallel Virtual Machine) es una herramienta diseñada


para solucionarnos una gran cantidad de problemas
asociados con la programación paralela. Sobre todo, el
monetario. Para ello, nos va a crear una nueva abstracción,
que es la máquina paralela virtual, empleando los recursos
computacionales libres de todas las máquinas de la red que
pongamos a disposición de la biblioteca. Es decir,
disponemos de todas las ventajas económicas asociadas a
la programación distribuida, ya que empleamos los recursos
hardware de dicho paradigma; pero programando el
conjunto de máquinas como si se tratara de una sola
máquina paralela, que es mucho más cómodo.

La PVM es el estándar de facto del mundo científico. De


hecho, en el área de la Física Computacional, la PVM es una
biblioteca ampliamente usada.

Ing. Sistemas y Computación Página 2


Procesamiento

PVM
(PARALLEL VIRTUAL MACHINE)

1. CONCEPTO

El PVM es un paquete de software que permite a un


conjunto heterogéneo de Unix o equipos con Windows
conectados entre sí por una red que se utilizará como un
equipo único en paralelo de gran tamaño. Por lo tanto
grandes problemas informáticos pueden ser resueltos de
manera más rentable mediante la potencia agregada y la
memoria de muchos equipos.

PVM permite a los usuarios aprovechar sus equipos


informáticos existentes para resolver problemas mucho
más grandes a un coste adicional mínimo. Cientos de sitios
en todo el mundo están utilizando PVM para resolver
importantes problemas científicos, industriales y médicas,
además de utilizar PVM como una herramienta educativa
para enseñar en paralelo de programación. Con decenas de
miles de usuarios, PVM se ha convertido en el estándar de
facto para el mundo de la computación distribuida a nivel
mundial.

Ing. Sistemas y Computación Página 3


Procesamiento

2.INFORMACIÓN GENERAL DEL PVM

El software PVM proporciona un marco unificado en el que


los programas paralelos se pueden desarrollar en forma
eficaz y sencilla utilizando el hardware existente. PVM
permite que una colección de sistemas informáticos
heterogéneos pueda ser considerada como una sola
máquina virtual paralela. PVM, maneja todo el enrutamiento
de mensajes, datos de conversión, y la programación de
tareas a través de una red de arquitecturas de computación
incompatibles. La interfaz de programación es
deliberadamente sencilla, permitiendo así que las
estructuras sencillo programa que se ejecutará en un modo
intuitivo. El usuario escribe su aplicación como un conjunto
de tareas de cooperación. Tareas de recursos PVM acceso a
través de una biblioteca de rutinas de interfaz estándar.
Estas rutinas permiten la iniciación y terminación de las
tareas a través de la red, así como la comunicación y
sincronización entre las tareas.
El mensaje PVM-primitivos que pasa se orienta hacia el
funcionamiento heterogéneo, con la participación inflexible
de tipos construcciones para almacenaje y transmisión. La
comunicación y construcciones incluyen aquellos para
enviar y recibir estructuras de datos como primitivos, así
como de alto nivel, tales como la radiodifusión, la
sincronización de barrera, y la suma global. Las tareas de
PVM pueden poseer un control arbitrario y las estructuras
de dependencia. En otras palabras, en cualquier momento
de la ejecución de una aplicación concurrente, cualquier
tarea en existencia puede iniciar o detener tareas o agregar
o eliminar las computadoras de la máquina virtual.
Cualquier proceso pueden comunicarse y / o sincronizar con
cualquier otra. Las instrucciones especiales de control y la
estructura de dependencias podrán ser ejecutadas en el
marco del sistema de PVM mediante el uso adecuado de
PVM construye el idioma de acogida y el control de las
declaraciones de flujo. Cualquier proceso pueden
comunicarse y / o sincronizar con cualquier otra.

Ing. Sistemas y Computación Página 4


Procesamiento

Otros paquetes: Varios grupos de investigación han


desarrollado paquetes de software que ayudan a los
programadores como PVM en el uso de la informática
distribuida. Entre las iniciativas más conocidas son:

 El Sistema de P4
 Express
 MPI
 El Sistema de Linda

 EL SISTEMA DE P4

Es una biblioteca de macros y subrutinas desarrolladas en


el Laboratorio Nacional Argonne para la programación de
una gran variedad de máquinas paralelas. p4 sistema
admite tanto el modelo de memoria compartida (con base
en los monitores) y el modelo de memoria distribuida (con
paso de mensajes). Para el modelo de memoria compartida
de la computación paralela, P4 proporciona un conjunto de
monitores útil, así como un conjunto de primitivas de las
que los monitores pueden ser construidos. Para el modelo
de memoria distribuida, P4 establece escrito enviar y recibir
operaciones y la creación de procesos de acuerdo a un
archivo de texto que describe el grupo y la estructura de
proceso.

 EXPRESS

El núcleo del sistema Express es un conjunto de


bibliotecas para la comunicación, I / O, y los gráficos
paralelos. Las primitivas de comunicación son similares a
los encontrados en otro mensaje de paso de los sistemas
e incluyen una variedad de operaciones globales y los
datos primitivos de distribución. Extended I / O (Input /
Output) rutinas permiten paralelo entrada y salida, y un
conjunto de rutinas similares se proporcionan para
Ing. Sistemas y Computación Página 5
Procesamiento

pantallas gráficas de múltiples procesos concurrentes.


Express también incluye la herramienta de NDB, un
depurador paralelo que usa comandos basado en el
popular “dbx interfaz.”

 MPI

La Message Passing Interface (MPI) no está destinada a ser


una infraestructura de software completo y autónomo que
se puede utilizar para la computación distribuida. MPI no
incluye necesidades tales como la gestión de procesos (la
capacidad de iniciar las tareas), (virtual) de configuración
del equipo y el apoyo para la entrada y de salida.. Como
resultado, se prevé que MPI se realiza como una capa de
interfaz de comunicaciones que se construirá en las
instalaciones de nativo de la plataforma de hardware
subyacente, con la excepción de ciertas operaciones de
transmisión de datos que podrían implementarse en un
nivel cercano al hardware. Este escenario permite la
prestación de PVM está siendo portados a MPI para explotar
cualquier comunicación de un rendimiento de los
suministros de proveedores.

 EL SISTEMAS DE LINDA

El concepto principal en Linda es la de un `` tupla espacio'',


Una abstracción que cooperan a través de procesos de
comunicación. Este tema central de Linda ha sido propuesto
como un paradigma alternativo a los dos métodos
tradicionales de procesamiento en paralelo: el basado en
memoria compartida, y que sobre la base de paso de
mensajes. La tupla concepto de espacio es esencialmente
una abstracción de la memoria distribuida compartida, con
una diferencia importante (tupla espacios asociativos) y
varias distinciones menores (destructivas y no destructivas
lee y coherencia semántica son posibles). Las aplicaciones
utilizan el modelo de Linda mediante la inserción de forma
explícita, dentro de los programas de cooperación

Ing. Sistemas y Computación Página 6


Procesamiento

secuencial, construcciones que manipular (insertar /


recuperar tuplas) el espacio de tupla.

Desde el punto de vista de aplicación Linda es un conjunto


de extensiones de lenguaje de programación para facilitar
la programación paralela. Proporciona una abstracción de la
memoria compartida para la comunicación entre procesos,
sin necesidad de hardware subyacente físicamente
comparten la memoria.

3.EL SISTEMA DE PVM

PVM (Parallel Virtual Machine) es un subproducto de un


curso de computación heterogéneos proyecto de
investigación de red que incluya a los autores y sus
instituciones. Los objetivos generales de este proyecto es
investigar en temas, y desarrollar soluciones para,
informática concurrentes heterogéneos. PVM es un conjunto
integrado de herramientas de software y bibliotecas que
emula a un propósito general, flexible, heterogéneo marco
de computación simultánea en ordenadores
interconectados de variada arquitectura.

El objetivo general del sistema de PVM es para permitir que


una colección de equipos que se utilizarán en forma
cooperativa para el cálculo de concurrentes o paralelas. En
resumen, los principios en que se basa PVM son las
siguientes:

 El usuario de host configurado piscina: Las tareas de


cálculo La aplicación de ejecutar en un conjunto de
máquinas que son seleccionados por el usuario para
una carrera determinada del programa de PVM. Ambas
máquinas de un solo CPU y multiprocesadores de
hardware (incluyendo memoria compartida y
distribuida de ordenadores de memoria) puede ser
Ing. Sistemas y Computación Página 7
Procesamiento

parte del grupo de acogida. La piscina de acogida


puede ser modificada mediante la adición y
eliminación de las máquinas durante la operación (una
característica importante para la tolerancia a fallos).

 Translúcido acceso al hardware: Los programas de


aplicación o bien puede ver el entorno de hardware
como una colección sin atributos de los elementos de
procesamiento virtual, o puede optar por aprovechar
las posibilidades de máquinas específicas en la piscina
de acogida mediante la colocación de determinadas
tareas de cómputo en los equipos más adecuados.

 Basado en el proceso de cálculo: La unidad de


paralelismo en PVM es una tarea de (a menudo pero
no siempre un proceso de Unix), un hilo secuencial
independiente de control que alterna entre la
comunicación y la computación. No hay ningún
proceso a la cartografía del procesador es implícita o
ejecutada por PVM, en particular, podrá ejecutar varias
tareas en un único procesador.

 Mensaje explícito de paso de modelo: las colecciones


de las tareas de cálculo, cada uno realizando una
parte de los datos de carga de trabajo de una
aplicación utilizando, funcional, o la descomposición
híbrido, cooperar de forma explícita enviar y recibir
mensajes entre sí. Este mensaje está limitado sólo por
la cantidad de la memoria disponible.

 La heterogeneidad de apoyo: El sistema de PVM apoya


la heterogeneidad en términos de máquinas, redes y
aplicaciones. Con respecto a la transmisión de
mensajes, PVM permite mensajes que contengan más
de un tipo de datos que se intercambian entre las
máquinas con diferentes representaciones de datos.

Ing. Sistemas y Computación Página 8


Procesamiento

 Soporte para multiprocesadores: PVM utiliza el


mensaje nativo de pasar las instalaciones en
multiprocesadores para aprovechar el hardware
subyacente. Vendedores suelen suministrar sus
propios PVM optimizado para los sistemas, que aún
puede comunicarse con la versión de PVM público.

CARACTERISTICAS DE PVM

 Heterogeneidad
 Escalabilidad
 Múltiple representación de datos
 Tolerancia ante fallos.

Heterogeneidad

Cada computador tiene sus propias características en


cuanto:
 Arquitectura
• Métodos de programación optimizados
• Códigos diferentes
 Formato de los datos
• Exigencia de conversiones en las
transferencias
 Capacidad de computación
• Potencia del procesador
• Carga de trabajo
• Carga de red
 Hay que pensar en una distribución
asimétrica de carga de trabajo

Escalabilidad

Porque podemos aumentar y disminuir el número de


procesadores en caliente).

Múltiple representación de datos

Ing. Sistemas y Computación Página 9


Procesamiento

Dotar de un mecanismo muy cómodo y potente para


realizar programas empleando modelos SIMD Varios
datos a la ves (SIMD)

Tolerancia ante fallos

En un caso como el nuestro, en el que la aplicación va a


estar corriendo durante meses, es crítico que la
aplicación sea tolerante a fallos. Siempre hay alguna
razón por la que alguna máquina puede fallar, y la
aplicación debe continuar haciendo los cálculos con aquel
hardware que continúe disponible.

4. ARQUITECTURA PVM

El sistema se compone de:

 Demonios: pvmd

En cada computador debe ejecutarse un demonio


pvmd.

 Librerías

Esta biblioteca contiene rutinas de usuario exigible


para el paso de mensajes, los procesos de desove, la
coordinación de tareas, y la modificación de la
máquina virtual.

EL DEMONIO

Llamado pvmd3ny, a veces abreviado


pvmd , que reside en todos los equipos
que componen la máquina virtual. (Un
ejemplo de un programa de demonio
Ing. Sistemas y Computación Página 10
Procesamiento

es el programa de correo que se ejecuta en segundo plano


y se ocupa de todo el correo electrónico entrante y saliente
en una computadora.) Pvmd3 está diseñado para cualquier
usuario con válida para acceder a este demonio se puede
instalar en una máquina. Cuando un usuario desea ejecutar
una aplicación PVM, primero crea una máquina virtual
mediante el inicio de PVM. La aplicación PVM puede ser
iniciado desde un sistema Unix en cualquiera de los
anfitriones. Múltiples usuarios puede configurar máquinas
virtuales superpuestas, y cada usuario puede ejecutar
simultáneamente varias aplicaciones PVM.

pvmd’ debe estar corriendo en todas las computadoras que


constituyan la máquina virtual.

Un usuario que desea ejecutar una aplicación PVM ejecuta


primero el demonio en una única máquina, y éste se
encarga de activar el resto de demonios de las máquinas
que forman la PVM.
DEMONIOS: PVMD

 Existe un demonio maestro.

Desde el que se inicia el sistema virtual. Consola

Este es únicamente generador de tareas y distribuidor


de datos.

 Y demonios esclavos.

Iniciados por el maestro al invocar la incorporación de


cada nueva máquina al sistema.

Estos forman una estructura o patrón de


comunicaciones en el que está basado el algoritmo
paralelo.

LIBRERIA

Ing. Sistemas y Computación Página 11


Procesamiento

Es una biblioteca de rutinas de PVM interfaz. Contiene


un repertorio funcional completa de los primitivos que son
necesarios para la cooperación entre las tareas de una
aplicación. Esta biblioteca contiene rutinas de usuario
exigible para el paso de mensajes, los procesos de desove,
la coordinación de tareas, y la modificación de la máquina
virtual.

Contiene las rutinas para operar con los procesos,


transmitir mensajes entre procesadores y alterar las
propiedades de la maquina virtual. Toda aplicación se ha de
enlazar a la biblioteca para poderse ejecutar después.
Tendremos tres ficheros de bibliotecas, la libpvm3.a
(biblioteca basica en C), la libgpvm3.a (biblioteca de
tratamiento de grupos) y la libfpvm3.a (biblioteca para
fortran)

Utilizada para:
• Control de procesos
• Crear, enviar y recibir mensajes
• Información del sistema
• Configuraciones dinámicas (añadir y eliminar
procesadores)
• Señalización
• Mensajes de error
• Empaquetar datos en mensajes
• Gestionar grupos de procesos

TAREAS
• Las tareas pueden ser iniciada desde la consola o por
otras tareas.
• Toda acción PVM implica una invocación al demonio
local
• Los demonios locales gestionan el control de las tareas
existentes y su localización .
• Cada tarea tiene un identificador único en el sistema
PVM

Ing. Sistemas y Computación Página 12


Procesamiento

Las tareas pueden

 Crear/destruir otras tareas


 Enviar/recibir mensajes
 Ampliar/reducir el tamaño del sistema virtual (nº
de computadores)

• Los mensajes son transmitidos entre tareas


 No a través de canales

• Cada tarea tiene un identificador único (TID)

• Los mensajes son enviados y recibidos de tid’s


 Se suministran funciones para conocer las tid de
las tareas.

• Es posible crear “grupos de trabajo”


 Asignación de un índice único a cada tarea
 Funciones especiales de grupo
• Agregación
• Distribución de datos limitada

5. MODELO DE TRABAJO PVM

1. Escribir uno o más programas secuenciales que


incluyan las convenientes llamadas a librería pvm
2. Compilar cada programa para cada uno de los
computadores del sistema virtual
3. Depositar los ejecutables en una localización especial
de cada uno de los computadores del sistema virtual.
4. Invocar pvm. Añadir las máquinas que van a
pertenecer al sistema virtual.
5. Invocar la ejecución del programa principal.

El la figura se muestra el modelo de computación PVM

Ing. Sistemas y Computación Página 13


Procesamiento

En la siguiente figura vemos Una visión de arquitectura del


sistema de PVM, poniendo de relieve la heterogeneidad de
las plataformas de computación con el apoyo de PVM

Ing. Sistemas y Computación Página 14


Procesamiento

El sistema de PVM actualmente soporta C, C + +, Fortran y


lenguas. Este conjunto de interfaces de lenguaje han sido
incluidos en base a la observación de que la mayoría
predominante de las aplicaciones de destino está escrita en
C y Fortran, con una tendencia emergente en la
experimentación de lenguajes basados en objetos y
metodologías.

6. ¿QUÉ OFRECE EL PVM?

• Un entorno de desarrollo

 Librerías
• Comunicación
• Sincronización
• Iniciación y finalización de tareas
• Configuración dinámica de la máquina
virtual

• Una “máquina virtual” que oculta al usuario la


heterogeneidad subyacente

 Enrutamiento
 Conversión de formato de datos
• Basado en tipos de datos simples
 Planificación de tareas

Ing. Sistemas y Computación Página 15


Procesamiento

Características:
• Pleno control de qué computadores se integran al
sistema

 Herramientas de asignación – desasignación de


computadores a la máquina virtual

• Ocultamiento de la heterogeneidad de computadores.

 PVM asume la conversión de tipos y formatos


entre arquitecturas diferentes.

• La unidad de asignación es el proceso.

 Los procesos son distribuidos entre las máquinas


como un ente virtual de procesamiento.

• Modelo de computación: paso de mensajes

 Con independencia de donde se ejecuten los


procesos, su único medio de comunicación es el
mensajes.
CREACIÓN DE PROCESOS Y
EJECUCIÓN

ORGANIZACIÓN MASTER - SLAVE.

Comenzar un nuevo proceso PVM:


nrop= pvm_spawn(*tasks, **argv, flag, *where,
ntasks, *tids)

Terminar un proceso PVM:


pvm_exit()

INFORMACIÓN

Conocer el ID de una tarea (proceso) PVM:

Ing. Sistemas y Computación Página 16


Procesamiento

tid = pvm_mytid() Retorna ident. de tarea


tidp = pvm_parent() Retorna ident. de proceso
que hizo spawn o 0.

RUTINAS DE PASAJE DE MENSAJES BÁSICAS

Los programas se comunican por pasaje de mensajes.

Para el envío y recepción de mensajes cada proceso


dispone de buffers para realizar la operaciones.

ENVIAR UN MENSAJE

3 pasos:

bufid=pvm_initsend(PvmDataDefault)
Requerir un Buffer

info = pvm_pkint(int np, int nitem, 1)


Llenar el buffer
info = pvm_pkstr(char *c) con
los datos
info = pvm_pkfloat(float *f, int nitem, 1)
del mensaje

info= pvm_send(tid, msgtag)


Enviar en mensaje

RECIBIR UN MENSAJE (1)

2 pasos:

bufid = pvm_recv(tid, msgtag) Espera y recibe un


mensaje

Ing. Sistemas y Computación Página 17


Procesamiento

Espera hasta que un mensaje con rótulo msgtag haya


arribado
desde tid.

Cuando el mensaje arriba se crea un nuevo buffer de


recepción
donde se ubica el mensaje

/* Si msgtag es –1, recibe cualquier mensaje */


/* Si tid es –1, recibe desde cualquier fuente */

RECIBIR UN MENSAJE

info = pvm_upkint(int np, int nitem, 1)


Recuperar el mensaje
info = pvm_upkstr(char *c) desde el
buffer
info = pvm_upkfloat(float *f, int nitem, 1)

Buffer de datos activo de recepción puede contener


múltiples tipos de datos (entero, flotante, double, char,
byte, etc.)

RECIBIR UN MENSAJE(2)

bufid = pvm_nrecv(tid, msgtag) Recibe


una mensaje

Ing. Sistemas y Computación Página 18


Procesamiento

Si el mensaje requerido no ha arribado desde tid entonces


retorna
bufid =0
Cuando el mensaje arriba se crea un nuevo buffer de
recepción donde se
ubica el mensaje

/* Si msgtag es –1, recibe cualquier mensaje */


/* Si tid es –1, recibe desde cualquier fuente */

EJEMPLOS
hello.c (1)

#include <stdio.h>
#include "pvm3.h"
main()
{
int i, cc, t, tid;
char buf[100];
Ing. Sistemas y Computación Página 19
Procesamiento

printf(“Soy el proceso local t%x\n", pvm_mytid());


cc = pvm_spawn("hello_other", (char**)0, 0,
"",1, &tid);
if (cc==1) {
cc = pvm_recv(-1, -1);
pvm_upkstr(buf);
printf(“ %s\n",buf);
} else
printf(“No se puede comenzar hello_other\n”);
pvm_exit();
exit(0);
}

hello_other.c (1)

#include "pvm3.h"
main()
{
int ptid;
char buf[100];
ptid = pvm_parent();
strcpy(buf, "Hola mundo!
desde ");
gethostname(buf +
strlen(buf), 64);

pvm_initsend(PvmDataDefault);
pvm_pkstr(buf);
pvm_send(ptid, 1);
pvm_exit();
exit(0);
}

hello.c (2)
#include <stdio.h>
#include "pvm3.h"
main()
{
int i, cc, t, tid;
char buf[100];

Ing. Sistemas y Computación Página 20


Procesamiento

printf(“Soy el proceso local t%x\n",


pvm_mytid());
cc = pvm_spawn("hello_other", (char**)0, 0,
"",1, &tid);
if (cc==1) {
cc = pvm_recv(-1, -1);
pvm_bufinfo(cc, (int*)0, (int*)0, &t);
pvm_upkstr(buf);
printf(“t%x: %s\n", t,buf);
} else
printf(“No se puede comenzar
hello_other\n”);
pvm_exit();
exit(0);
}

hello.c (3) –completar!

#include <stdio.h>
#include "pvm3.h"
main()
{
int i, cc, t, tid[10];
char buf[100];
int ntask = 4;
printf("Yo soy el proceso t%x\n", pvm_mytid());
cc = pvm_spawn("hello_other", (char**)0, 0,
"",ntask, tid);
/////
pvm_bufinfo(cc, (int*)0, (int*)0, &t);
pvm_upkstr(buf);
printf(“desde t%x: %s\n", t,buf);
////
pvm_exit(); exit(0); }
GRUPOS DINÁMICOS DE PROCESOS

Las tareas pueden formar grupos y subgrupos entre todos


los procesos (procesadores virtuales)

Una tarea crea o se reúne a un grupo:

Ing. Sistemas y Computación Página 21


Procesamiento

name = pvm_joingroup(char *group)

name contiene la instancia dentro del grupo de tareas

P0 P1 P2 P3 P4 P5 P6 P7
NAME=0 NAME=1 NAME=2 NAME=3 NAME=0 NAME=1 NAME=2 NAME=3

NUMPR OCESSORS=4 NUMPR OCESSORS=4

P0 P1 P2 P3 P4 P5 P6 P7
NAME=0 NAME=1 NAME=0 NAME=1 NAME=0 NAME=1 NAME=0 NAME=1
NUMPROCESSOR S=2 NUMPR OCESSORS=2 NUMPROCESSORS=2 NUMPROCESSORS=2

COMUNICACIÓN COLECTIVA

Un mensaje puede ser distribuido a todos los miembros del


grupo excepto a si mismo

info = pvm_bcast(char *group, int msgtag)

SINCRONIZACIÓN

Ing. Sistemas y Computación Página 22


Procesamiento

 Suponga que un grupo de procesos está computando


valores y en algún punto debe esperar hasta que todos
los procesos hayan alcanzado un punto de referencia
en sus computaciones.

 El mecanismo básico que implementa esta situación


se denomina barrier

info = pvm_barrier(char *group, int count)

Ing. Sistemas y Computación Página 23

You might also like