Procesamiento Paralelo PVM
Procesamiento Paralelo PVM
Procesamiento Paralelo PVM
INTRODUCCION
PVM
(PARALLEL VIRTUAL MACHINE)
1. CONCEPTO
El Sistema de P4
Express
MPI
El Sistema de Linda
EL SISTEMA DE P4
EXPRESS
MPI
EL SISTEMAS DE LINDA
CARACTERISTICAS DE PVM
Heterogeneidad
Escalabilidad
Múltiple representación de datos
Tolerancia ante fallos.
Heterogeneidad
Escalabilidad
4. ARQUITECTURA PVM
Demonios: pvmd
Librerías
EL DEMONIO
Y demonios esclavos.
LIBRERIA
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
• 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
Enrutamiento
Conversión de formato de datos
• Basado en tipos de datos simples
Planificación de tareas
Características:
• Pleno control de qué computadores se integran al
sistema
INFORMACIÓN
ENVIAR UN MENSAJE
3 pasos:
bufid=pvm_initsend(PvmDataDefault)
Requerir un Buffer
2 pasos:
RECIBIR UN MENSAJE
RECIBIR UN MENSAJE(2)
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
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];
#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
P0 P1 P2 P3 P4 P5 P6 P7
NAME=0 NAME=1 NAME=2 NAME=3 NAME=0 NAME=1 NAME=2 NAME=3
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
SINCRONIZACIÓN