parallel virtual machine (disingkat pvm) adalah sebuah perangkat lunak yang digunakan untuk pembuatan jaringan komputer paralel.
perangkat lunak ini didesain sedemikian rupa untuk mengizinkan sebuah jaringan komputer yang heterogen yang terdiri atas mesin yang menjalankan sistem operasi windows atau unix agar digunakan sebagai sebuah prosesor paralel tunggal yang terdistribusi.
hal ini bertujuan untuk menyelesaikan beberapa masalah komputasi secara lebih murah dengan menggunakan kemampuan pemrosesan dan memori dari komputer-komputer yang terjaring tersebut.
perangkat lunak itu sendiri bersifat portabel, dan kode sumbernya pun tersedia secara bebas melalui netlib, yang sekarang telah dikompilasi untuk digunakan oleh beragam jenis komputer, dari mulai laptop hingga superkomputer cray.
pvm mengizinkan pengguna untuk menggunakan perangkat keras komputer yang telah ada untuk menyelesaikan problem yang lebih rumit pada harga yang lebih murah.
pvm juga digunakan sebagai alat bantu dalam akademisi, khususnya untuk mengajarkan pemrograman paralel (dalam fakultas ilmu komputer, dan tentu saja digunakan untuk menyelesaikan beberapa masalah praktikal.
versi pertama dari pvm dikembangkan di ornl pada tahun 1989, dan lalu setelah dikembangkan dari awal kembali oleh university of tennessee, versi 2 pun dirilis pada bulan maret 1991.
versi 3 dirilis pada 1993 dan mendukung fitur toleransi kesalahan (fault-tolerance;;) dan portabilitas yang lebih baik.
versi terbarunya adalah 3.4.6 yang dirilis pada tanggal 2 februari 2009.
pvm pun terus dikembangkan secara aktif, meskipun maturitas dan stabilitas relatif yang ditunjukkannya tidak seberapa signifikan.
pvm dianggap sebagai sebuah langkah baru dalam tren pemrosesan paralel modern dan juga grid computing.
penggunaannya pun banyak, dan kini pun bermunculan beberapa binding bahasa pemrograman yang baru (seperti halnya modul dalam bahasa perl parallel::pvm, yang ada dalam pengembangan yang aktif).
antarmuka perl dirilis di bawah artistic license, meski pvm sendiri dirilis dengan lisensi bsd license dan gnu general public license.
komputer-komputer idividual dapat saja menggunakan multiprosesor dengan memori bersama atau memori lokal, super komputer dengan prosesor vektor, beberapa jenis mesin pemrosesan grafik, atau workstation dengan prosesor skalar, dan tentu saja komputer pribadi (pc) yang dapat saling dihubungkan dengan beragam jenis interkoneksi jaringan komputer, mulai dari ethernet atau fddi.
pvm terdiri atas sebuah lingkungan runtime dan pustaka untuk melakukan message-passing, manajemen tugas serta manajemen sumber daya dan tentu saja notifikasi saat terjadi kesalahan (fault notification).
memang pvm tidak secara otomatis membuat sebuah paket program komersial untuk berjalan lebih cepat, tapi, pvm menyediakan banyak fungsi yang powerful untuk secara manual melakukan paralelisasi sebuah program sumber yang telah ada, atau untuk menulis program baru yang menggunakan konsep komputasi terdistribusi/komputasi paralel.
perangkat lunak pvm harus secara spesifik diinstalasikan di atas masing-masing komputer yang hendak digunakan dalam sebuah mesin virtual (virtual machine).
hingga sekarang tidak ada cara otomatis untuk menginstalasikan program ke dalam komputer jarak jauh melalui pvm, meskipun hanya menyalin folder/direktori pvm3/lib dan pvm3/bin ke komputer yang lain (lalu menyunting $pvm_root dan $pvm_arch) cukup dapat menjalankan program pvm. namun, melakukan kompilasi atau membangun program pvm membutuhkan instalasi penuh dari pvm.
program-program pengguna yang ditulis dalam bahasa pemrograman c, c++ atau fortran dapat mengakses pvm melalui rutin-rutin pustaka yang telah disediakan.
pvm juga mendukung broadcasting melalui pvm_bcast yang dapat mengirim semua proses dalam sebuah kelompok dan juga multicasting melalui pvm_mcast yang mengirim pesan ke sebuah daftar tertentu dari proses.
occam programming language
ease programming language
linda (coordination language)
calculus of communicating systems
calculus of broadcasting systems
message passing interface (mpi)
pvm++: a c++-library for pvm
free library for code mobility
pvm in the parawiki