next up previous contents
Next: Подробное описание консоли PVM Up: PVM - параллельная виртуальная Previous: Типичные ошибки при запуске   Contents

Выполнение программ PVM

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

Первым шагом здесь является копирование программы-образца в свою пользовательскую область на диске:

% cp -r /PVM_ROOT/examples $HOME/pvm3/examples

% cd $HOME/pvm3/examples

Каталог с примерами содержит файлы Makefile.aimk и Readme, в которых описано как построить примеры. PVM поддерживает архитектурно независимую программу построения aimk, которая автоматически определяет PVM_ARCH и компонует любые необходимые для данной операционной системы библиотеки к разрабатываемому приложению; aimk автоматически доопределяет соответствующую $PATH, когда Вы помещаете cshrc.stub в файл .cshrc. Применение aimk позволит Вам сохранить исходные тексты и файл с программой сборки неизменными при компиляции в среде с различными архитектурами.

Программная модель ``ведущий-ведомый'' - наиболее популярная из используемых в распределенных вычислениях. (В области параллельного программирования более популярна модель ОКМД).

Для компиляции примера ``ведущий-ведомый'' на С введите
% aimk master slave. Если вы предпочитаете работать c Фортраном, откомпилируйте версию на Фортране % aimk fmaster fslave.

В зависимости от расположения каталога согласно PVM_ROOT, выражения INCLUDE в заголовках примеров на Фортране могут нуждаться в изменениях. Если PVM_ROOT не совпадает с HOME/pvm3, то замените ее таким образом, чтобы она указывала на $PVM_ROOT
/include/fpvm3.h
. Заметьте, PVM_ROOT для Фортранне ``расширяется'', поэтому вы должны добавлять определение достоверного пути.

Программа сборки пересылает исполняемые файлы в
$HOME/pvm3/bin/PVM_ARCH, где PVM по умолчанию будет искать их на всех хостах. Если задействованные файловые системы на всех хостах PVM не одинаковы, то вам понадобится дополнительно создавать или копировать (в зависимости от архитектуры) эти исполняемые файлы на хосты в составе PVM.

Теперь, задействовав одно окно, запустите PVM и сконфигурируйте несколько хостов. Приводимые примеры разработаны для выполнения на произвольном числе хостов, начиная с одного. В другом окне смените каталог на HOME/pvm3/bin/PVM_ARCH и введите % master. Программа выдаст запрос о количестве задач. В примерах это количество не обязательно должно совпадать с количеством хостов. Проверьте несколько комбинаций.

Первый пример иллюстрирует возможность запустить программу PVM из любого терминала Unix на любом хосте виртуальной машины. Этот процесс подобен способу, котором вы запускали бы последовательную программу a.out на рабочей станции. В следующем примере, который также относится к модели ``ведущий-ведомый'', под названием hitc, вы можете увидеть, как порождается работа с консоли PVM, а также из XPVM.

Здесь hitc иллюстрирует балансирование динамической загрузки с применением парадигмы ``пула задач''. Согласно парадигме пула задач, ведущая программа управляет большой очередью задач, всегда посылая ``простаивающим'' ведомым программам больше заданий для выполнения - до тех пор, пока очередь не опустеет. Такая парадигма эффективна в ситуациях, когда хосты очень рознятся по вычислительной мощности, потому что наименее загруженные или более мощные хосты выполняют больше работы, причем все хосты остаются занятыми до тех пор, пока задание не будет выполнено. Для компиляции hitc введите % aimk hitc hitc_slave.

С этого момента hitc не требует никакого пользовательского ввода, он может быть порожден прямо с консоли PVM. Запустите консоль PVM и добавьте ограниченное число хостов. В ответ на приглашение консоли PVM введите pvm> spavn -> hitc.

При порождении, опция -> заставляет все конструкции вывода на экран в hitc и ему подчиненных направлять информацию в видимую область консоли. Эта возможность применима при отладке первых небольших программ PVM. Вы можете поэкспериментировать с этой опцией, помещая конструкции вывода на экран в hitc.f и hitc_slave.f и перекомпилируя их.

Далее, hitc может использоваться для иллюстрирования возможностей анимации в реальном масштабе времени для XPVM. Запустите XPVM и постройте виртуальную машину с четырьмя хостами. ``Кликните'' кнопку tasks и выберите в меню spawn. Введите hitc, когда XPVM запросит команду и ``кликните'' start. Вы увидите подсветку иконок хостов, как только виртуальная машина станет задействованной; увидите порождение задач hitc_slave и все сообщения, которые ``бродят'' между задачами на дисплее Space Time. Можно выбрать несколько других вариантов просмотра с помощью XPVM меню views. Способ task output эквивалентен применению опции -> для консоли PVM. Это заставляет стандартный вывод всех задач принудительно перенаправлять в окно, которое при этом ``всплывает''.

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



2004-06-22