Программное обеспечение PVM

Пакет PVM позволяет реализовать виртуальную машину параллельного действия (Parallel Virtual Machine – PVM). Пакет состоит из двух частей-.

  • • из библиотеки, вызываемой пользователем;
  • • из "сторожевого" процесса, который работает постоянно на каждой машине в мультикомпьютере.

При запуске системы программа PVM с помощью конфигурационного файла определяет машины, которые должны быть частью ее виртуального мультикомпьютера. На каждой из этих машин запускается "сторожевой" процесс. Путем ввода команд на консоли PVM можно изменять (добавлять или убирать) количество машин. С помощью команды

spawn -cont n prog

запускается n параллельных процессов. В этом случае каждый процесс запускает свою программу prog. Пакет PVM решает, куда поместить процессы, однако с помощью аргументов команды spawn пользователь способен подменять их. Вызвав процедуру pvm_spawn, можно запустить процесс из работающего процесса. Процессы могут быть организованы в группы, причем состав групп может меняться во время выполнения программы.

Организация взаимодействия. Каждый процесс PVM в каждый момент времени имеет по одному активному пересылочному и приемному буферу. Взаимодействие машин осуществляется с помощью примитивов для передачи сообщений.

Отправитель сообщения вызывает:

  • • библиотечные процедуры для компоновки сообщения, при этом составляется описание величин сообщения, чтобы получатель мог узнать их и преобразовать в исходный формат, после чего сообщение помещается в активный пересылочный буфер;
  • • библиотечную процедуру pvmsend, которая представляет собой блокирующий сигнал send.

Получатель может поступить по-разному. Он может вызвать:

  • • процедуру pvm_recv, которая блокирует получателя до прихода подходящего сообщения. Когда вызов возвратится, сообщение будет находиться в активном приемном буфере. Оно может быть распаковано и преобразовано в подходящий для данной машины формат с помощью набора распаковывающих процедур;
  • • процедуру pvm trecv, которая блокирует получателя на определенный промежуток времени, и, если подходящего сообщения за это время не пришло, он снимает блокировку. Эта процедура необходима для того, чтобы не заблокировать процесс навсегда;
  • • процедуру pvmnrecv, которая сразу же возвращает значение в виде сообщения либо указания на отсутствие сообщений. Вызов можно повторять, чтобы опрашивать входящие сообщения.

Помимо приведенных выше процедур существуют другие библиотечные процедуры:

  • • процедура pvm_bcast – поддерживает широковещание, т.е. отправляет сообщение всем процессам в группе;
  • • процедура pvm_mcast – поддерживает мультивещание, т.е. посылает сообщение только некоторым процессам, входящим в определенный список;
  • • процедура pvm_barrier – осуществляет синхронизацию между процессами. Когда процесс вызывает эту процедуру, он блокируется до тех пор, пока определенное число других процессов не достигнет барьера и они не вызовут эту же процедуру;
  • • процедуры для управления главной вычислительной машиной, группами машин, буферами, передачей сигналов, проверкой состояния и т.д.

Пакет PVM имеется во многих компьютерах параллельного действия.

 
< Пред   СОДЕРЖАНИЕ     След >