PDF de programación - Paralelización de Programas Secuenciales: Parallel Virtual Machine (PVM)

Imágen de pdf Paralelización de Programas Secuenciales: Parallel Virtual Machine (PVM)

Paralelización de Programas Secuenciales: Parallel Virtual Machine (PVM)gráfica de visualizaciones

Publicado el 6 de Julio del 2017
1.287 visualizaciones desde el 6 de Julio del 2017
1,8 MB
57 paginas
Creado hace 14a (13/10/2009)
Manuel Arenaz
[email protected]

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Introducción a la programación paralela

¿Qué es la Programación Paralela?

  Computador estándar secuencial:
  Ejecuta las instrucciones de un programa en orden para

producir un resultado

  Idea de la computación paralela:
  Producir el mismo resultado utilizando múltiples

procesadores

  Objetivos:
  Reducir el tiempo de ejecución
  Reducir los requerimientos de memoria

© Manuel Arenaz, 2009

2

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Introducción a la programación paralela

Tipos de arquitecturas paralelas

Memoria distribuida

Memoria compartida

© Manuel Arenaz, 2009

3

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Introducción a la programación paralela

Modelos de Programación

  Memoria compartida:
  Espacio de direcciones “global” (i.e.
accesible por todos los procesadores)

  Intercambio de información y

sincronización mediante variables
compartidas

  Ejemplos:
  OpenMP
  Threads

© Manuel Arenaz, 2009

4

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Introducción a la programación paralela

Modelos de Programación

  Paso de mensajes:
  Espacio de direcciones “local” (i.e.

accesible sólo por un procesador)

  Intercambio de información y

sincronización mediante mensajes

  Ejemplos:
  PVM (Parallel Virtual Machine)
  MPI (Message-Passing Interface)
  Unix sockets

© Manuel Arenaz, 2009

5

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación Paralela

PVM

© Manuel Arenaz, 2009

6

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Introducción a la programación paralela

¿Qué es PVM?

¿?

  Entorno de libre distribución (software libre) para el

desarrollo y ejecución de programas paralelos
utilizando sistemas distribuidos heterogéneos

  Arquitectura de memoria distribuida
  Paradigma de programación de paso de mensajes
  Útil en múltiples sistemas paralelos
  Redes de estaciones de trabajo
  Clusters de PCs (p.ej., Linux/Beowulf)
  Supercomputadores de memoria distribuida (p.ej., Cray T3D)

© Manuel Arenaz, 2009

7

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

¿Qué es PVM?

  El hardware consta de un conjunto de ordenadores
interconectados mediante una red de comunicaciones
  Cada ordenador tiene su propio procesador y su propia
memoria

© Manuel Arenaz, 2009

8

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

¿Qué es PVM?

  La máquina virtual paralela consta de un conjunto de
procesos especiales (pvmd) con los que se comunican
los procesos del programa paralelo (proceso).

© Manuel Arenaz, 2009

9

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

¿Qué es PVM?

  A nivel lógico, los procesos del programa paralelo se
comunican entre si mediante el paso de mensajes
  A nivel físico, las comunicaciones de mensajes son
gestionadas por los procesos especiales pvmd.

© Manuel Arenaz, 2009

10

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

¿Qué es PVM?

  PVM resuelve los problemas de heterogeneidad:
  Arquitectura, formato de datos, velocidad de procesamiento,

carga de trabajo del computador (p.ej., planificación de tareas) y
de la red de interconexión (p.ej., enrutamiento de datos)

© Manuel Arenaz, 2009

11

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

¿Qué es PVM?

  Ventajas de la computación distribuida usando PVM
  Reutilización de hardware existente
  Aumento de los recursos de la máquina virtual paralela bajo demanda
  Facilitar el desarrollo de programas paralelos para una colección de

máquinas heterogéneas

  Aumentar la productividad mediante el uso de un entorno de desarrollo

familiar independiente del sistema paralelo subyacente

  Herramienta que permite optimizar el rendimiento del programa paralelo

asignando cada tarea individual a la arquitectura más apropiada

  Herramienta para implementar tolerancia a fallos

© Manuel Arenaz, 2009

12

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

Modo de trabajo en PVM

  Modelo de programación simple y general
  API para creación y destrucción de procesos a través de la

red de interconexión

  API para comunicación y sincronización entre los procesos a

través de la red

  Programas paralelo PVM
  Conjunto de procesos que se comunican entre sí mediante

paso de mensajes

  Los procesos pueden acceder en cualquier momento a los

recursos PVM a través de funciones del API

© Manuel Arenaz, 2009

13

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

Modo de trabajo en PVM

  Paso 1: El desarrollador escribe uno o varios programas
secuenciales que contienen llamadas al API de PVM

© Manuel Arenaz, 2009

14

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

Ejemplo “Hello world”

#include “pvm3.h”
main()
{
int tid, msgtag, cc;
char buf[100];

#include "pvm3.h"
main()
{
int ptid, msgtag;
char buf[100];

printf("i'm t%x\n", pvm_mytid());

ptid = pvm_parent();

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();
}

strcpy(buf, "hello, world from ");
gethostname(buf + strlen(buf), 64);
msgtag = 1;
pvm_initsend(PvmDataDefault);
pvm_pkstr(buf);
pvm_send(ptid, msgtag);

pvm_exit();
}

Programa PVM hello.c

Programa PVM slave.c

© Manuel Arenaz, 2009

15

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

Ejemplo “Hello world”

#include “pvm3.h”
main()
{
int tid, msgtag, cc;
char buf[100];

printf("i'm t%x\n", pvm_mytid());

Incluir fichero de cabecera “pvm3.h” que
contiene las declaraciones de las funciones del
API de PVM.

ptid = pvm_parent();

#include "pvm3.h"
main()
{
int ptid, msgtag;
char buf[100];

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();
}

strcpy(buf, "hello, world from ");
gethostname(buf + strlen(buf), 64);
msgtag = 1;
pvm_initsend(PvmDataDefault);
pvm_pkstr(buf);
pvm_send(ptid, msgtag);

pvm_exit();
}

Programa PVM hello.c

Programa PVM slave.c

© Manuel Arenaz, 2009

16

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

Ejemplo “Hello world”

#include “pvm3.h”
main()
{
int tid, msgtag, cc;
char buf[100];

#include "pvm3.h"
main()
{
int ptid, msgtag;
char buf[100];

ptid = pvm_parent();

Creación e inicialización de los procesos PVM que forman
el programa paralelo (e.g., pvm_spawn()).

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();
}

strcpy(buf, "hello, world from ");
gethostname(buf + strlen(buf), 64);
msgtag = 1;
pvm_initsend(PvmDataDefault);
pvm_pkstr(buf);
pvm_send(ptid, msgtag);

pvm_exit();
}

Programa PVM hello.c

Programa PVM slave.c

© Manuel Arenaz, 2009

17

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

Ejemplo “Hello world”

#include “pvm3.h”
main()
{
int tid, msgtag, cc;
char buf[100];

#include "pvm3.h"
main()
{
int ptid, msgtag;
char buf[100];

printf("i'm t%x\n", pvm_mytid() );

ptid = pvm_parent();

Identificación unívoca de los procesos PVM
mediante enteros TIDs (Task IDentifiers):
* Proporcionados por PVM (e.g., pvm_mytid())

strcpy(buf, "hello, world from ");
gethostname(buf + strlen(buf), 64);
msgtag = 1;
pvm_initsend(PvmDataDefault);
pvm_pkstr(buf);
pvm_send(ptid, msgtag);

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();
}

pvm_exit();
}

Programa PVM hello.c

Programa PVM slave.c

© Manuel Arenaz, 2009

18

Paralelización de Programas Secuenciales:
Parallel Virtual Machine (PVM)

Programación con PVM

Ejemplo “Hello world”

#include “pvm3.h”
main()
{
int tid, msgtag, cc;
char buf[100];

printf("i'm t%x\n", pvm_mytid());

Identificación unívoca de los procesos PVM
mediante enteros TIDs (Task IDentifiers):
* Proporcionados por PVM (e.g., pvm_mytid())
* Usados en las comunicaciones (e.g., pvm_send())

ptid = pvm_parent();

#include "pvm3.h"
main()
{
int ptid, msgtag;
char buf[100];

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();
}

strcpy(buf, "hello, world from ");
gethostname(buf + strlen(buf), 64);
msgtag =
  • Links de descarga
http://lwp-l.com/pdf4923

Comentarios de: Paralelización de Programas Secuenciales: Parallel Virtual Machine (PVM) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad