Введение

Параллельная виртуальная машина (PVM) – это программный инструмент для организации параллельной работы сети компьютеров. Она предназначена для использования сети разнородных машин Unix и/или Windows как единого распределенного параллельного процессора. Таким образом, масштабные вычислительные задачи можно решать более экономично, используя суммарную вычислительную мощность и память множества компьютеров. Программное обеспечение отличается высокой переносимостью; исходный код, доступный бесплатно через netlib, был скомпилирован на различных платформах, от ноутбуков до суперкомпьютеров Cray. PVM позволяет пользователям эффективно использовать имеющееся компьютерное оборудование для решения значительно более сложных задач с минимальными дополнительными затратами. PVM применялась в качестве учебного пособия для преподавания параллельного программирования, а также для решения важных практических задач. Она была разработана Университетом Теннесси, Национальной лабораторией Оук-Ридж и Университетом Эмори. Первая версия была создана в ORNL в 1989 году, а после переработки в Университете Теннесси, версия 2 была выпущена в марте 1991 года. Версия 3 вышла в марте 1993 года и поддерживала отказоустойчивость и улучшенную переносимость. PVM стала важным шагом в развитии современных тенденций распределенных вычислений и сеточных технологий, однако с середины 1990-х годов её в значительной степени заменил гораздо более успешный стандарт MPI для обмена сообщениями на параллельных вычислительных системах. PVM является свободным программным обеспечением, распространяемым под лицензиями BSD и GNU General Public License.

Дизайн

PVM — это программная система, позволяющая использовать совокупность разнородных компьютеров как единый и гибкий параллельный вычислительный ресурс, или "параллельную виртуальную машину". Отдельные компьютеры могут быть многопроцессорными системами с общей или распределенной памятью, векторными суперкомпьютерами, специализированными графическими ускорителями или скалярными рабочими станциями и персональными компьютерами, соединенными различными сетями, такими как Ethernet или FDDI. PVM состоит из среды выполнения и библиотеки для передачи сообщений, управления задачами и ресурсами, а также уведомления об ошибках. Хотя PVM не ускорит автоматически работу коммерческого программного пакета, он предоставляет мощный набор функций для ручного распараллеливания существующей исходной программы или для разработки новых параллельных/распределенных программ. Программное обеспечение PVM должно быть установлено на каждой машине, которая будет использоваться в данной "виртуальной машине". В PVM отсутствует "автоматическая" установка исполняемых файлов на удаленные машины, однако для запуска программ PVM достаточно скопировать каталоги pvm3/lib и pvm3/bin на другую аналогичную машину (и настроить переменные окружения $PVM_ROOT и $PVM_ARCH). Компиляция или сборка программ PVM требует полной установки PVM. Пользовательские программы, написанные на C, C++ или Fortran, могут обращаться к PVM через предоставляемые библиотечные функции. PVM также поддерживает широковещательную рассылку (PVM bcast), которая отправляет сообщения всем процессам в группе, и многоадресную рассылку (PVM mcast), которая отправляет сообщения определенному списку процессов.