Параллельное и распределенное программирование на С++ - Хьюз Камерон
Шрифт:
Интервал:
Закладка:
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
Категории PVM-функций
Описание
Управление процессами
Упаковка сообщений и их отправка
Распаковка сообщений и их прием
Обмен задач сигналами Управление буфером сообщений
Функции обработки информации и служебные процедуры
Групповые операции
Используются для управления PVM-процесса м и
Применяются для упаковки сооб щ ений в пересылочном буфере и отправки их от одного PVM-процесса другому
Используются для получения сооб щ ений и распаковки данных из активного буфера
Применяются для си г нализации и уведомления PVM-процессов о возникновении события
Используются для инициализации, очистки и размещения буферов, предназначенных для приема и отправки сообщений, которыми обмениваются PVM-процессы
Применяются для получения информации о PVM-процессах и выполнения дру г их важных задач
Используются для объединения процессов в группы и выполнения других групповых операций
Требования к PVM-программам
Если PVM-среда реализуется в виде сети компьютеров, то, прежде чем ваша С++-программа начнет взаимодействовать с ней, необходимо обработать следующие элементы.
Параграф 1
Следует установить переменные среды PVM_ROOT и PVM_ARCH. Переменная среды PVM_ROOT должна указывать на каталог, в котором инсталлирована PVM-б иблиотека.
Использование оболочки Bourne (BASH)
Использование С-оболочки_
$ PVM_ROOT=/usr/lib/pvm3
setenv PVM_ROOT /usr/lib/pvm3
$ export PVM_ROOT
Переменная среды PVM_ARCH идентифицирует архитектуру компьютера. Каждый компьютер, включенный в среду PVM, должен быть идентифицирован архитектурой. Например, Ultrasparcs-компьютеры имеют обозначение SUN4SOL2, а Linux-компьютеры — обозначение LINUX. В табл. 6.2 перечислены самые распространенные архитектуры для PVM-среды.
Эта таблица содержит имя и тип компьютера, соответствую щ ий этому имени. Установите свою переменную среды PVM_ARCH равной одному из имен, приведенных в табл. 6.2. Например:
Использование оболочки Bourne (BASH) _ Использование С-оболочки _
$PVM_ARCH=LIMJX setenv PVM_ARCH LINUX
$export PVM_ARCH
Таблица 6.2. Самые распростра н енные архитек т уры для PVM-среды
PVM_ARCH
Компьютер
PVM__ARCH
Компьютер
AFX8
Alliance
LINUX
80386/486 PC (UNIX)
ALPHA
DEC Alpha
MASPAR
Maspar
BAL
Sequent Balance
MIPS
MIPS 4680
BFLY
BBN ButterflyTC2000
NEXT
NeXT
BSD386
80386/486 PC (UNIX)
PGON
Intel ParagonIntel Paragon
CM2
«Мыслящая машина» CM2
PMAX
DECstation 3100,5100
CM5
«Мыслящая машина» CM5
RS6K
IBM/RS6000
CNVX
Convex С-серии
RT
IBM RT
CNVXN
Convex С-серии
SGI
Silicon Graphics IRIS
CRAY
C-90, YMP,T3D (доступный
порт) SGI5
Silicon Graphics IRIS
CRAY2
Cray-2
SGIMP
SGI Multiprocessor
CRAYSIMP
CrayS-MP
SUN3
Sun3
6.2. Библио т ека PVM для языка С++ 221
Окончание табл. 6.2
PVM_ARCH
Компьютер
PVM_ARCH
Компьютер
DGAV
Data General Aviion
SUN4
Sun 4, SPARCstation
E88K
Encore 88000
SUN2SOL2
Sun 4, SPARCstation
HP300
НР-9000 Model 300
SUNMP
SPARC Multiprocessor
HPPA
НР-9000 PA-RISC
SYMM
Sequent Symme^
I860
Intel iPSC/860
TITN
Stardent Titan
IPSC2
Intel iPSC/2 386 Host
U370
IBM 370
KSRI
Kendall Square KSR-1
UVAX
DEC LicroVAX
Параграф 2
Выполняемые файлы любых программ, участвующих в среде PVM, должны быть размещены на всех компьютерах, включенных в среду PVM, или доступны всем компьютерам, включенным в среду PVM. При этом каждая программа должна быть скомпилирована для работы с учетом конкретной архитектуры. Это означает, что, если в среду PVM включены процессоры UltraSparcs, PowerPCs и Intel, то мы должны иметь версию программы, скомпилированную для каждой архитектуры. Эту версию программы следует разместить в известном для PVM месте. Таким местом часто служит каталог $HOME /pvm3/bin. Этот каталог может быть также задан в файле конфигурации PVM, который обычно имеет имя hostfile или .xpvm_hosts (если используется среда XPVM). Файл hostfile должен содержать такую запись: ep=/usr/local/pvm3/bin
Эта запись означает, что любые пользовательские выполняемые файлы, необходимые для среды PVM, можно найти в каталоге /usr/local/pvm3 /bin.
Параграф 3
Пользователь, запускаю щ ий PVM-программу, должен иметь сетевой доступ (rsh или ssh) к каждому компьютеру, включенному в среду PVM. По умолчанию PVM получает доступ к каждому компьютеру, используя зарегистрированное имя пользователя, запускаю щ его PVM-программу, или учетную запись компьютера, на котором она запускается. Если потребуется другая учетная запись (помимо зарегистрированного имени пользователя-инициатора), то в файл конфигурации PVM hostfile или .xpvm_hosts необходимо добавить соответствую щ ую запись, например: lo= flashgordon
Параграф 4
Создайте на каждо м компьютере файл .rhosts, в котором перечислите все компьютеры, подлежа щ ие использованию. Эти компьютеры имеют потенциальную возможность для включения в среду PVM. В зависи м ости от содержи м ого файла .xpvm_hosts или файла pvm_hosts, эти компьютеры автоматически будут добавлены в PVM-среду при запуске программы pvmd. Ко м пьютеры, перечисленные в этих файлах, также м огут дина м ически включаться в PVM-среду во вре м я работы.