Parallel Virtual Machine (PVM)
Parallel Virtual Machine (PVM) to zestaw narzędzi umożliwiających tworzenie oprogramowania dla komputerów połączonych w sieci równolegle. Jego głównym celem jest integracja komputerów o różnych konfiguracjach sprzętowych w jeden zespół działający równolegle.
Historia PVM
PVM został opracowany na Uniwersytecie Tennessee oraz w Oak Ridge National Laboratory, Emory University i Carnegie Mellon University. Pierwsza wersja powstała w 1989 roku, a jej druga wersja została udostępniona w marcu 1991. Obecnie PVM jest wciąż używany w programowaniu równoległym.
Opis działania PVM
PVM działa jako narzędzie do zarządzania i wymiany informacji między procesami uruchomionymi na różnych maszynach. Umożliwia „połączenie” wielu komputerów w jeden system, co odbywa się poprzez dołączanie hostów z zainstalowanym PVM. Po skonfigurowaniu, PVM pełni rolę pomostu komunikacyjnego między zarejestrowanymi procesami.
Przesyłanie informacji pomiędzy programami
PVM obsługuje dwa rodzaje przesyłania informacji: blokujące i nieblokujące. W przesyłaniu blokującym nadawca i odbiorca czekają na zakończenie operacji wysyłania/odbierania, natomiast w przesyłaniu nieblokującym procesy działają równolegle, co może wymagać synchronizacji. Każdy zarejestrowany proces w PVM ma przypisane bufory do wysyłania i odbierania informacji.
Procedura przesyłania informacji
- Wysłanie informacji przez nadawcę:
- Inicjalizacja bufora wysyłania
- Spakowanie danych do bufora
- Wysłanie wiadomości
- Odebranie informacji przez odbiorcę:
- Odebranie wiadomości
- Rozpakowanie informacji z bufora
Przykładowe procedury przesyłania informacji
W PVM dostępne są różne funkcje, takie jak:
- pvm_send: do wysyłania wiadomości do konkretnego procesu.
- pvm_recv: do odbierania wiadomości z określonego procesu.
- pvm_mcast: do wysyłania wiadomości do grupy procesów.
- pvm_bcast: do rozsyłania komunikatu do wszystkich procesów w grupie.
- pvm_reduce: do wykonania operacji zbiorczych na danych procesów grupy.
Konfiguracja i kompilacja PVM
Aby korzystać z PVM, należy ustawić zmienne środowiskowe:
export PVM_ROOT=/usr/share/pvm3
export PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch`
Kompilacja kodu źródłowego odbywa się za pomocą polecenia:
gcc -o master master.c -I$PVM_ROOT/include -L$PVM_ROOT/lib/$PVM_ARCH -lpvm3 -lgpvm3
Przykłady programów korzystających z PVM
Przykładowe programy, takie jak „Hello World” oraz obliczanie liczby PI metodą Monte Carlo, ilustrują wykorzystanie PVM w praktycznych zastosowaniach obliczeniowych.
PVM, mimo swojej użyteczności, staje się coraz mniej popularny, a wsparcie dla niego jest ograniczone, co utrudnia rozwiązywanie problemów związanych z jego działaniem.