next up previous contents
Next: 2.3.6.3 Implementación Up: 2.3.6 PVM Previous: 2.3.6.1 Historia   Índice General


2.3.6.2 Diseño

El diseño de PVM se centra alrededor del concepto de la máquina paralela virtual, que es una colección dinámica de recursos de cómputo que a través de PVM se puede administrar como un solo sistema paralelo. El concepto de máquina virtual es esencial ya que proporciona la base para la heterogeneidad, portabilidad y encapsulamiento de funciones en PVM. Es también el aspecto más único de PVM, la capacidad de ``agregar'' recursos de cómputo de plataformas disímiles en una entidad que permite aprovechar dichos recursos en la realización de una tarea común.

Si bien PVM fue inicialmente diseñado para un ambiente distribuido y heterogéneo, que se puede visualizar como una serie de equipos o nodos interconectados por una red local, también está disponible para equipos MPP comerciales como los Intel iPSC y Paragon, el CM-5 de Thinking Machines, algunos equipos con arquitectura de memoria compartida de Sequent, IBM, SGI, DEC y Sun, e incluso supercomputadoras como la Cray T-3D (un equipo masivamente paralelo con memoria distribuida). Esto tiene sentido si se recuerda que anteriormente (sección 1.3.3) se mencionó que es posible emplear un paradigma de paso de mensajes en una arquitectura de memoria compartida.

Más aún, si bien la versión pública de PVM se puede ejecutar en todas estas arquitecturas, los fabricantes pueden implementar la API 2.7 de PVM sobre las funciones de hardware específicas de sus equipos, aprovechando sus capacidades y obteniendo mayor rendimiento. Esto se da particularmente en equipos inherentemente multiprocesador, que pueden ya contar con facilidades para intercambio de mensajes de muy alto rendimiento.

Como una consecuencia de su naturaleza multiplataforma, una característica importante de PVM es que permite el desarrollo portable de aplicaciones paralelas con paso de mensajes, utilizando la misma API, para un número considerable de arquitecturas.

El diseño de PVM refleja ciertos principios, obedeciendo a su desarrollo para una máquina paralela virtual que puede estar compuesta por nodos con distintas arquitecturas y el uso del paradigma de paso de mensajes.

PVM proporciona facilidades para crear la máquina paralela virtual a partir de uno o más hosts disponibles. El usuario tiene la posibilidad de especificar qué hosts formarán parte de su máquina virtual, y esta configuración puede modificarse al estarse ejecutando el programa; de hecho, un programa para PVM puede por sí solo agregar y eliminar hosts de la máquina virtual.

Tradicionalmente, en máquinas masivamente paralelas cada nodo cuenta con exactamente la misma configuración de hardware y el mismo tipo de CPU; en las máquinas virtuales en las que se ejecutan los programas en PVM, se tiene la posibilidad de tener nodos con distintas configuraciones y distintas arquitecturas o tipos de CPU. A fin de proporcionar máxima versatilidad y aprovechar estas características, PVM provee lo que se denomina ``acceso translúcido'' al hardware. El programador tiene la opción de considerar a la máquina virtual como un conjunto de nodos similares, sin atributos particulares; o bien identificar cada nodo, explotando sus capacidades específicas y asignar las tareas a los nodos más apropiados.

PVM va más allá de la portabilidad (capacidad de compilar el mismo programa sin cambios en varias arquitecturas distintas) e implementa el concepto de heterogeneidad, es decir, en una aplicación PVM pueden interactuar programas ejecutándose en nodos con arquitecturas diferentes. PVM logra esto empleando tipos de datos opacos, y funciones que convierten los tipos de datos específicos de cada nodo al equivalente opaco para su empleo en mensajes que se distribuyen entre los nodos.

Una aplicación de PVM se compone de tareas (tasks). La tarea es la unidad de trabajo básica en PVM, un flujo de control independiente y secuencial que alterna entre cálculo y comunicación con otras tareas. Las tareas se comunican por medio de paso de mensajes explícito.


next up previous contents
Next: 2.3.6.3 Implementación Up: 2.3.6 PVM Previous: 2.3.6.1 Historia   Índice General
2002-05-15