Подпрограмма pvm_parent() возвращает TID процесса,
который порожден данной задачей, или значение PvmNoParent
если он не создан с помощью pvm_spawn()
int dtid = pvm_tidtohost( int tid)
call pvmftidtohost (tid, dtid)
Подпрограмма pvm_tidhost() возвращает TID - dtid
- демона, выполняющегося на том же хосте, что и задача с TID.
Эта подпрограмма применима для определения, на каком хосте выполняется
данная задача. Более обобщенная информация о внутренней структуре
виртуальной машины, включая текстовые имена сконфигурированных хостов,
может быть получена с использованием следующих функций.
Подпрограмма pvm_config() возвращает информацию о виртуальной
машине, включая количество хостов - nhost - и количество
различных форматов данных - narch. hostp - это указатель
на декларированный пользователем массив из структур
pvmhostinfo.
Размер массива должен быть длиной, по крайней мере, соответствующей
nhost. При возврате, каждая структура pvmhostinfo
содержит TIDpvmd, имя хоста, имя архитектуры и
относительную характеристику скорости процессора для определенного
хоста в конфигурации.
Функции на Fortran возвращают информацию об одном хосте за вызов,
поэтому для "опроса" всех хостов нужен цикл. Так что, если pvmfconfig
вызывается nhost раз, то внутренняя структура виртуальной
машины будет представлена. Работа с Fortran-интерфейсом подразумевает
сохранение копии массива hostp и возврат только одного "вхождения"
за вызов. На всех хостах должны отработать циклы для того, чтобы они
получили обновленный массив hostp. По этому, если виртуальная
машина в течение этих вызовов изменяется, то изменение проявится в
параметрах nhost и narch, но не отразится на информации
о хосте. В настоящий момент нет способа "сбросить" pvmfconfig()
и заставить его перезапустить цикл в процессе его работы.
Подпрограмма pvm_tasks() возвращает информацию о задачах
ПВМ, выполняющихся на виртуальной машине. Целое число which
указывает, о каких задачах вернуть информацию. В настоящее время опциями
могут быть: 0 - о всех задачах, pvmdTID (dtid)
- о задачах, выполняющихся на указанном хосте, или TID -
только об указанной задаче.
Количество задач возвращается в ntask. taskp - это
указатель на массив структур pvmtaskinfo. Массив размера
ntask. Каждая структура pvmtaskinfo содержит TID,
pvmd TID, TID предка, флаг статуса и имя файла для порождения.
(ПВМ "не знает" имя файла вручную запущенной задачи и поэтому
"не заполняет" это имя.) Функция на Fortran возвращает информацию
об одной задаче за вызов, поэтому для "опроса" всех задач нужен
цикл. Так что, если нужно "опрашивать" все задачи и если pvmftasks
вызывается ntask раз, то задачи будут представлены. Fortran-реализации
предполагают, что пул задач не подвержен изменениям, пока имеются
циклы "опроса" задач. Если же пул изменился, эти изменения не
проявятся до тех пор, пока не начнется следующий цикл из ntask
вызовов.
Примеры использования pvm_config и pvm_tasks можно
найти в исходных текстах консоли ПВМ, которая сама является задачей
ПВМ. Примеры использования Fortran-версий этих подпрограмм можно найти
в исходных текстах pvm3/examples/ testall.f.
Знаете ли Вы, что экономико-математическое моделирование - это концентрированное выражение наиболее существенных взаимосвязей и закономерностей поведения управляемой системы в математической форме (В.С. Немчинов).