Una macchina virtuale parallela è un’applicazione software che consente a più computer indipendenti, distribuiti geograficamente, di connettersi tra loro come una rete e di prestare la propria potenza di elaborazione e memoria del sistema a un’applicazione.
Il cambiamento nei costi di produzione e la popolarità del computer di casa ha portato a un aumento dell’accessibilità dei computer molto potenti nel mercato dei consumatori. Queste macchine sono sottoutilizzate con le loro applicazioni software standard, lasciando libera una grande quantità di potenza di elaborazione. Il software per macchine virtuali parallele consente di raggruppare e accedere a queste risorse per risolvere problemi scientifici, medici o industriali grandi e complessi.
La macchina virtuale parallela è stata creata per la prima volta nel 1989 presso gli Oak Ridge National Labs da Al Geist. Sulla base del lavoro svolto, il progetto è stato ampliato presso l’Università del Tennessee nel marzo 1991 e da allora è cresciuto costantemente.
Un sistema di macchine virtuali parallele ha due parti, l’applicazione che risiede sulle singole macchine e la libreria delle routine di interfaccia. L’applicazione software è denominata demone della macchina virtuale parallela, pvmd3 o pmvd. Questo piccolo programma rimane passivo fino a quando non viene richiesto di eseguire un’applicazione di macchina virtuale parallela. Quando l’utente desidera eseguire questo tipo di programma, deve prima avviare la macchina virtuale parallela. Ciò consente loro di accedere al software su qualsiasi altro host.
La libreria di routine della macchina virtuale parallela contiene un elenco completo di tutti i codici necessari per coordinare le varie attività eseguite su host separati. In questa libreria sono incluse le routine standard per lo scambio di messaggi, il coordinamento delle attività e qualsiasi modifica alla macchina virtuale stessa.
Il concetto alla base della macchina virtuale parallela è che qualsiasi applicazione ha diverse attività che possono essere eseguite in modo indipendente. Questo tipo di logica è molto comune nei calcoli scientifici complessi. Ci sono due modelli utilizzati nelle macchine virtuali parallele; parallelismi funzionali e dati.
I parallelismi funzionali separano un’applicazione in attività chiaramente definite e indipendenti. Queste attività vengono eseguite su macchine host separate. La macchina virtuale parallela viene utilizzata per coordinare in base alle funzioni, come input, soluzione, output e visualizzazione.
Il parallelismo dei dati o SPMD (Single Program Multiple Data) è il metodo più diffuso. In questo metodo, tutti i compiti sono uguali, ma ogni host risolve un piccolo pezzo del puzzle più grande. Un ambiente di macchina virtuale parallelo supporta entrambi i metodi, il che è importante in quanto potrebbe essere più efficace combinare questi due metodi a seconda dei calcoli richiesti.
C, C++ e Fortran sono i linguaggi di programmazione per computer utilizzati nella macchina virtuale parallela. Queste lingue sono state selezionate perché la maggior parte delle applicazioni utilizzate in questo ambiente sono state create in queste lingue. Il codice sorgente per il software della macchina virtuale parallela è ampiamente disponibile su Internet ed è possibile accedervi tramite ftp, www, xnetlib o un’e-mail automatica.