ПВМ   ОКМ   ДМ   экономическая информатика   4GL   Теория и практика обработки информации

Параллельная виртуальная машина, PVM

Контроль процессов

int tid = pvm_mytid(void)

call pvmfmytid (tid)

Подпрограмма pvm_mytid() возвращает TID текущего процесса и может вызываться неограниченное число раз. Она регистрирует данный процесс в ПВМ - если это первый вызов ПВМ. Любой системный вызов ПВМ (не только pvm_mytid) будет регистрировать задачу в ПВМ, если перед этим вызовом задача не зарегистрирована, но общая практика требует для обеспечения регистрации вызова pvm_mytid.

int info = pvm_exit(void)

call pvmfexit(info)

Подпрограмма pvm_exit сообщает локальному pvmd о том, что процесс "покинул" ПВМ. Эта подпрограмма не завершает процесс принудительно - он может продолжать выполнять задачу наряду с другими процессами UNIX. Пользователи обычно вызывают pvm_exit прямо перед выходом - в своих программах на C и прямо перед STOP - в своих программах на Fortran.

int numt = pvm_spawn (char *task, char **argv, int flag,

    char *where, int ntask, int *tids)

call pvmfspawn (task, argv, flag, where, ntask, tids, numt)

Подпрограмма pwm_spawn запускает до ntask копий исполняемого файла task на виртуальной машине. argv - это указатель на массив аргументов для task, причем конец массива указывается с помощью NULL. Если задача не получает аргументы, то argv равняется NULL. Аргумент flag используется для указания опций, которые обобщены в табл. 12.

Табл. 12. Опции порождения потомков в PVM.

Значение Опция Cмысл

Эти имена предопределены в pvm3/include/pvm3.h. На Fortran все имена предопределяются в параметрических конструкциях, которые могут быть найдены в секции include файла pvm3/include/pvm3.h.

PvmTaskTrace - это новая возможность ПВМ версии 3.3. Она заставляет порождаемые задачи генерировать трассировочные события. PvmTaskTrace используется XPVM. Иначе, пользователь должен с помощью pvm_setopt() указать, когда генерировать трассировочные события.

При возврате, numt присваивается количество успешно порожденных задач или код ошибки, если ни одна из задач не смогла стартовать. Если задачи были запущены, то pwn_spawn вернет вектор, состоящий из идентификаторов порожденных задач; если не смогли стартовать лишь некоторые задачи, соответствующие коды ошибок помещаются в последние ntask - numt позиций вектора.

Вызов pvm_spawn() может также запускать задачи и на мультипроцессорах. В случае с Intel iPSC/860 накладываются следующие ограничения. Каждый порождающий вызов получает подкуб размера ntask и загружает программу task во все соответствующие станции. ОС iPSC/860 имеет распределительное ограничение: 10 подкубов для всех пользователей, так что лучше запустить блок из задач в iPSC/860 одним вызовом, чем несколькими. Два самостоятельных блока задач, порожденные в iPSC/860 раздельно, все равно могут взаимодействовать друг с другом так же, как и с другими задачами ПВМ, даже считая, что они существуют в разных подкубах. ОС iPSC/860 имеет еще одно ограничение: сообщения, следующие от станций во "внешний мир" должны быть меньше, чем 256 КБайтов.

int info = pvm_kill (int tid)

call pvmfkill (tid, info)

Подпрограмма pvm_kill() принудительно завершает некоторую задачу ПВМ, идентифицированную TID. Эта подпрограмма разработана для принудительного завершения задач, которые должны завершаться вызовами pvm_exit(), следующими за exit().

int info = pvm_catchout (FILE *ff)

call pvmfcatchout (onoff)

По умолчанию ПВМ записывает stdout и stderr порожденных задач в файл протокола /tmp/pvml.<uid>. Подпрограмма pvm_catchout заставляет вызывающую задачу "захватывать" выходной поток последовательно порожденных задач. Символы, выводимые в stdout или stderr дочерних задач, собираются демонами pvmd и отсылаются в форме сообщений родительской задаче, которая "метит" каждую строку и добавляет ее в указанный файл (для C) или выводит в стандартный поток вывода (для Fortran). Все выводимое на экран предваряется информацией о том, какая из задач сгенерировала вывод на экран, а завершение каждого вывода метится с целью помочь разграничить "перекрывающиеся" выходные потоки нескольких задач.

Если pvm_exit вызывается предком тогда, когда активен сбор выходных потоков, он будет блокироваться до тех пор, пока все выводящие задачи не отработают - в том порядке, в котором они осуществляли весь свой вывод. Во избежание такой ситуации, можно "выключить сбор выходных потоков" вызовом pvm_catchout(0) перед тем, как вызвать pvm_exit.

Новые возможности ПВМ версии 3.3 включают и возможность регистрировать специальные задачи ПВМ для обработки заданий по включению новых хостов, размещению задач на хостах и запуску новых задач. С этой целью создается интерфейс для "продвинутых" пакетных планировщиков (примерами могут быть Condor, DQS и LSF), которые подключаются к ПВМ и позволяют выполнять задания ПВМ в пакетном режиме. Такие регистрирующие подпрограммы также создают интерфейс для разработчиков отладчиков - для стимулирования удовлетворительных разработок сложных отладчиков специально для ПВМ.

Имена таких подпрограмм: pvm_reg_rm(), pvm_reg_hoster() и pvm_reg_tasker(). Эти "продвинутые" функции не имеют значения для среднестатистического пользователя ПВМ и потому здесь подробно не представляются.

ПВМ   ОКМ   ДМ   экономическая информатика   4GL   Теория и практика обработки информации

Знаете ли Вы, что адекватность модели - это требование к модели, состоящее в её способности воспроизводить свойства, состояние и поведение исследуемого объекта с достаточной для поставленных целей точностью и в достаточно широком диапазоне изменения её состояния и состояния её среды. Достаточным условием адекватности модели является её гомоморфизм исследуемому объекту.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution