procesamiento paralelo PVM

30
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.”

description

Uploaded from Google Docs

Transcript of procesamiento paralelo PVM

Page 1: procesamiento paralelo PVM

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.”

Page 2: procesamiento paralelo PVM

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

Page 3: procesamiento paralelo PVM

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

Page 4: procesamiento paralelo PVM

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

Page 5: procesamiento paralelo PVM

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 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.”

Ing. Sistemas y Computación Página 5

Page 6: procesamiento paralelo PVM

Procesamiento

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 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.

Ing. Sistemas y Computación Página 6

Page 7: procesamiento paralelo PVM

Procesamiento

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 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.

Ing. Sistemas y Computación Página 7

Page 8: procesamiento paralelo PVM

Procesamiento

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.

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.

Ing. Sistemas y Computación Página 8

Page 9: procesamiento paralelo PVM

Procesamiento

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

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.

Ing. Sistemas y Computación Página 9

Page 10: procesamiento paralelo PVM

Procesamiento

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 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.

Ing. Sistemas y Computación Página 10

Page 11: procesamiento paralelo PVM

Procesamiento

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

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)

Ing. Sistemas y Computación Página 11

Page 12: procesamiento paralelo PVM

Procesamiento

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

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ónIng. Sistemas y Computación Página 12

Page 13: procesamiento paralelo PVM

Procesamiento

• 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

Page 14: procesamiento paralelo PVM

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

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.

Ing. Sistemas y Computación Página 14

Page 15: procesamiento paralelo PVM

Procesamiento

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

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.

Ing. Sistemas y Computación Página 15

Page 16: procesamiento paralelo PVM

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:

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

Ing. Sistemas y Computación Página 16

Page 17: procesamiento paralelo PVM

Procesamiento

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

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 contenermúltiples tipos de datos (entero, flotante, double, char, byte, etc.) Ing. Sistemas y Computación Página 17

Page 18: procesamiento paralelo PVM

Procesamiento

RECIBIR UN MENSAJE(2)

bufid = pvm_nrecv(tid, msgtag) Recibe una mensaje

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 */

Ing. Sistemas y Computación Página 18

Page 19: procesamiento paralelo PVM

Procesamiento

EJEMPLOShello.c (1)

#include <stdio.h>#include "pvm3.h"main(){

int i, cc, t, tid;char buf[100]; 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);

Ing. Sistemas y Computación Página 19

Page 20: procesamiento paralelo PVM

Procesamiento

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

Ing. Sistemas y Computación Página 20

Page 21: procesamiento paralelo PVM

Procesamiento

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:

name = pvm_joingroup(char *group)

name contiene la instancia dentro del grupo de tareas

Ing. Sistemas y Computación Página 21

Page 22: procesamiento paralelo PVM

Procesamiento

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

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 22

Page 23: procesamiento paralelo PVM

Procesamiento

Ing. Sistemas y Computación Página 23