O mașină virtuală paralelă este o aplicație software care permite mai multor computere independente, distribuite geografic, să se conecteze între ele ca o rețea și să-și împrumute puterea de procesare și memoria sistemului unei singure aplicații.
Schimbarea costurilor de producție și popularitatea computerului de acasă a dus la o creștere a accesibilității computerelor foarte puternice pe piața de consum. Aceste mașini sunt subutilizate cu aplicațiile lor software standard, lăsând o mulțime de putere de procesare liberă. Software-ul pentru mașini virtuale paralele permite ca aceste resurse să fie puse în comun și accesate pentru a rezolva probleme științifice, medicale sau industriale mari și complexe.
Mașina virtuală paralelă a fost creată pentru prima dată în 1989 la Oak Ridge National Labs de către Al Geist. Pe baza lucrărilor de acolo, proiectul a fost extins la Universitatea din Tennessee în martie 1991 și a crescut constant de atunci.
Un sistem de mașini virtuale paralele are două părți, aplicația care se află pe mașinile individuale și biblioteca de rutine de interfață. Aplicația software se numește demonul mașinii virtuale paralele, pvmd3 sau pmvd. Acest mic program rămâne pasiv până când este necesar să ruleze o aplicație de mașină virtuală paralelă. Când utilizatorul dorește să ruleze acest tip de program, trebuie mai întâi să pornească mașina virtuală paralelă. Acest lucru le permite accesul la software pe orice altă gazdă.
Biblioteca de rutină a mașinii virtuale paralele deține o listă completă a tuturor codurilor necesare pentru a coordona diferite sarcini care se execută pe gazde separate. În această bibliotecă sunt incluse rutine standard pentru transmiterea mesajelor, coordonarea sarcinilor și orice modificări aduse mașinii virtuale în sine.
Conceptul de bază din spatele mașinii virtuale paralele este că orice aplicație are mai multe sarcini care pot fi rulate independent. Acest tip de logică este foarte comun în calculele științifice complexe. Există două modele utilizate în mașinile virtuale paralele; paralelisme funcționale și de date.
Paralelismele funcționale separă o aplicație în sarcini clar definite, independente. Aceste sarcini sunt efectuate pe mașini gazdă separate. Mașina virtuală paralelă este folosită pentru a coordona în funcție de funcții, cum ar fi intrarea, soluția, ieșirea și afișarea.
Paralelismul de date sau un singur program de date multiple (SPMD) este metoda cea mai populară. În această metodă, toate sarcinile sunt egale, dar fiecare gazdă rezolvă o mică bucată din puzzle-ul mai mare. Un mediu de mașină virtuală paralelă acceptă ambele metode, ceea ce este important deoarece poate fi cel mai eficient să amestecați aceste două metode în funcție de calculele necesare.
C, C++ și Fortran sunt limbajele de programare utilizate în mașina virtuală paralelă. Aceste limbi au fost selectate deoarece majoritatea aplicațiilor utilizate în acest mediu au fost construite în aceste limbi. Codul sursă pentru software-ul mașinii virtuale paralele este disponibil pe scară largă pe internet și poate fi accesat prin ftp, www, xnetlib sau un e-mail automat.