Una máquina virtual paralela es una aplicación de software que permite que varias computadoras independientes, distribuidas geográficamente, se conecten entre sí como una red y presten su capacidad de procesamiento de sistema y memoria a una aplicación.
El cambio en los costos de fabricación y la popularidad de la computadora doméstica ha dado como resultado un aumento en la asequibilidad de computadoras muy poderosas en el mercado de consumo. Estas máquinas están infrautilizadas con sus aplicaciones de software estándar, lo que deja libre una gran cantidad de potencia de procesamiento. El software de máquina virtual en paralelo permite que estos recursos se agrupen y se acceda a ellos para resolver problemas científicos, médicos o industriales grandes y complejos.
La máquina virtual paralela fue creada por primera vez en 1989 en Oak Ridge National Labs por Al Geist. Basado en el trabajo allí, el proyecto se expandió en la Universidad de Tennessee en marzo de 1991 y ha crecido constantemente desde entonces.
Un sistema de máquina virtual en paralelo tiene dos partes, la aplicación que se encuentra en las máquinas individuales y la biblioteca de rutinas de interfaz. La aplicación de software se denomina demonio de máquina virtual paralela, pvmd3 o pmvd. Este pequeño programa permanece pasivamente hasta que se requiere ejecutar una aplicación de máquina virtual en paralelo. Cuando el usuario desea ejecutar este tipo de programa, primero debe iniciar la máquina virtual paralela. Esto les permite acceder al software en cualquier otro host.
La biblioteca de rutinas de máquinas virtuales paralelas contiene una lista completa de todos los códigos necesarios para coordinar varias tareas que se ejecutan en hosts separados. En esta biblioteca se incluyen rutinas estándar para el paso de mensajes, la coordinación de tareas y cualquier cambio en la propia máquina virtual.
El concepto central detrás de la máquina virtual paralela es que cualquier aplicación tiene varias tareas que se pueden ejecutar de forma independiente. Este tipo de lógica es muy común en los cálculos científicos complejos. Hay dos modelos que se utilizan en máquinas virtuales paralelas; paralelismos funcionales y de datos.
Los paralelismos funcionales separan una aplicación en tareas independientes claramente definidas. Estas tareas se realizan en máquinas host independientes. La máquina virtual paralela se utiliza para coordinarse en función de las funciones, como entrada, solución, salida y visualización.
El paralelismo de datos o datos múltiples de un solo programa (SPMD) es el método más popular. En este método, todas las tareas son iguales, pero cada anfitrión está resolviendo una pequeña pieza del rompecabezas más grande. Un entorno de máquina virtual en paralelo admite ambos métodos, lo cual es importante ya que puede ser más eficaz combinar estos dos métodos según los cálculos necesarios.
C, C ++ y Fortran son los lenguajes de programación de computadoras que se utilizan en la máquina virtual paralela. Se seleccionaron estos idiomas porque la mayoría de las aplicaciones utilizadas en este entorno se crearon en estos idiomas. El código fuente del software de la máquina virtual paralela está ampliamente disponible en Internet y se puede acceder a él a través de ftp, www, xnetlib o un correo electrónico automático.