функ ции pvm_exit (). Эту функцию необходимо вызывать при завершении PVM обработки задачи. Несмотря на то что функция pvm_exit () не разрушает процесс и не прекращает его выполнение, она позволяет PVM-среде освободиться от задачи и отсоединить за дачу от PVM-среды. Обратите внимание на то, что программы 6.1 и 6.2 — вполне авто номные и независимые програ мм ные модули , которые содержат функцию main (). Де тали реализации програ мм ы 6.2 приведены в разделе «Профиль програ мм ы 6.2».

// Программа 6.2

#include «pvm3.h» #include «stdlib.h»

int main(int argc, char *argv[])

int MessageId, Ptid;

char Message[100];

float Num,Result,-Ptid = pvm_parent();

MessageId = 1;

pvm_recv(Ptid,MessageId) ;

pvm_upkstr(Message) ; Num = atof(Message); Result = Num / 7.0001r pvm_initsend (PvmDataDefault); pvm_pkfloat(&Result,1,1); pvm_send(Ptid,MessageId); pvm_exit(); return(0);

Профиль программы 6.2

Имя программы program6-2.cc

Описание Эта программа принимает число от родительского процесса и делит его на 7. Затем она отправляет результат своему родительскому процессу.

Требуемая библиотека libpvm3 . .

Требуемые заголовки < pvm3.h> <stdlib.h>

Инструкции по компиляции и компоновке программы

ф^У--о-^годгат6-2 -I $PVM_ROOT/include program6~2.cc -L : /^^_RCX)T/lib/PVM_ARCH - lpvm3

Среда для тестирования

|fiuJJE Onux 7.1 gnu С++ 2.95.2, Solaris 8 Workshop 6, PVM 3.4.3. У4нструкции по выполнению Эта программа порождается программой 6.1. |Примечания

Необходимо запустить на выпол н ение программу pvmd.

Компиляция и компоновка C++/PVM-npoгpaмм

Версия 3.4.x PVM-среды представлена в виде единой библиотеки libpvm3 . а. Чтобы скомпилировать PVM-программу, необходимо включить в ее код заголовочный файл pvm3.h и скомпоновать ее вместе с библиотекой libpvm3.а :

$ с++ -о mypvm_program -I $PVM_ROOT/include program.cc -L$PVM_ROOT/lib -lpvm3

Переменная среды $PVM_ROOT указывает на каталог, в котором инсталлирована библиотека PVM. При выполнении этой команды создается двоичный файл mypvm_program.

Для выполнения программ 6.1 и 6.2 сначала необходимо инсталлировать PVM-среду. Выполнить PVM- программу можно одним из трех основных способов: запустить автономный выполняемый (двоичный) файл, использовать PVM-консоль или среду XPVM.

Выполнение PVM-программы в виде двоичного файла

Во-первых, необходимо запустить программу pvmd; во-вторых, на каждом компьютере, включенном в PVM-среду, корректно ско м пилированные программы-участницы должны находиться в соответствую щ их каталогах. По умолчанию для скомпилированных программ (выполняемых файлов) используется такой каталог: $H0ME/pvm3 /bin /$PVM_ARCH

Здесь PVM_ARCH содержит имя архитектуры компьютера (см. табл. 6.1 и параграфы 1 и 2 из раздела6.2.5). Для выполняемых программ должны быть установлены соответствую щ ие разрешения на доступ и использование. ПрограммурллшЭ. можно запустить так: pvmd & или так:

pvmd hostfile &

Здесь hostfile — это файл конфи г урации, содержа щ ий специальные параметры для передачи про г рамме pvmd (см. табл. 6.2 и пара г рафы 1, 2 из раздела6.2.3). После запуска про г раммы pvmd на одном из компьютеров, включенных в среду PVM, можно запустить PVM-программу, используя следующую простую команду: $MyPvmProgram

Если эта программа порождает другие задачи, то они запустятся автоматически.

Запуск PVM-программ c помощью PVM-консоли

Для выполнения программ с помо щ ью PVM-консоли необходимо сначала запустить PVM-консоль, введя следующую команду: $pvm

Получив приглашение на ввод ко м анд pvm>, введите и м я програ мм ы, которую нужно выполнить:

pvm> spawn -> MyPvmProgram

Запуск PVM-программ c помощью XPVM

Кроме PVM-консоли, можно использовать графический интерфейс XPVM для X Windows. На рис. 6.2 показано диалоговое окно сеанса работы с XPVM-интерфейсом.

Библиотека PVM не требует, чтобы С++-программа придерживалась какой ибо конкретной структуры. Первая PVM-функци я, вызываема я программой, «поме щ ает» ее в PVM-среду. Дл я каждой программы, которая я вл я ется частью PVM-среды, следует всегда вызывать функцию pvm_exit (). Если этого не сделать, система зависнет.

Практика показывает, что функции pvm_mytid() и pvm_parent () необходи м о вызывать в начале обработки задачи. Наиболее популярные категории функций PVM перечислены в табл. 6.1.

Рис. 6.2. Диалоговое окно графического интерфейса XPVM

Таблица 6.1. Семь категорий фу н кций библио т еки PVM

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату