Параллельное и распределенное программирование на С++
Шрифт:
Среда для тестирования
|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-программу,
$ с++ -о 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
Кроме 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
Категории PVM-функций
Описание
Управление процессами
Упаковка сообщений и их отправка
Распаковка сообщений и их прием
Обмен задач сигналами Управление буфером сообщений
Функции обработки информации и служебные процедуры
Групповые операции
Используются для управления PVM-процесса м и
Применяются для упаковки сооб щ ений в пересылочном буфере и отправки их от одного PVM-процесса другому
Используются для получения сооб щ ений и распаковки данных из активного буфера
Применяются для си г нализации и уведомления PVM-процессов о возникновении события
Используются для инициализации, очистки и размещения буферов, предназначенных для приема и отправки сообщений, которыми обмениваются PVM-процессы
Применяются для получения информации о PVM-процессах и выполнения дру г их важных задач
Используются для объединения процессов в группы и выполнения других групповых операций
Требования к PVM-программам
Если PVM-среда реализуется в виде сети компьютеров, то, прежде чем ваша С++-программа начнет взаимодействовать с ней, необходимо обработать следующие элементы.
Параграф 1