Процедуры MPI иногда назначают специальный смысл специальному
значению аргумента основного типа; например, tag
- целочисленный
аргумент операций связи ``точка-точка'', со специальным подстановочным
значением MPI_ANY_TAG
. Такие аргументы будут иметь диапазон
регулярных значений, который является надлежащим поддиапазоном диапазона
значений соответствующего основного типа; специальные значения (типа
MPI_ANY_TAG
) будут вне регулярного диапазона. Диапазон регулярных
значений, например tag
, может быть запрошен, используя функции MPI
для запроса к окружению (Глава 7 документа MPI-1). Диапазон других
значений, например source
, зависит от значений, данных другими
подпрограммами MPI (в случае source
, это является размером
коммуникатора).
MPI также предоставляет предопределенные именованные постоянные
указатели, например,
MPI_COMM_WORLD
.
Все именованные константы, с исключениями, отмеченными ниже для языка
ФОРТРАН, могут использоваться в выражениях инициализации или
присваивания. Эти константы не изменяют значения во время выполнения.
Скрытые объекты, к которым обращаются постоянные указатели, определены и
не изменяют значение между инициализацией MPI (MPI_INIT
) и
завершением MPI (MPI_FINALIZE
).
Константами, которые не могут использоваться в выражениях инициализации или присваивания в языке ФОРТРАН, являются:
MPI_BOTTOM
MPI_STATUS_IGNORE
MPI_STATUSES_IGNORE
MPI_ERRCODES_IGNORE
MPI_IN_PLACE
MPI_ARGV_NULL
MPI_ARGVS_NULL
Совет разработчикам:
В языке ФОРТРАН реализация этих специальных констант может требовать
использования конструкций языка, которые находятся вне стандарта языка ФОРТРАН.
Использование специальных значений для констант (например, определение их
через инструкции parameter
) невозможно, потому что реализация
не может отличить эти значения от стандартизованных данных. Как правило, эти
константы реализованы как предопределенные статические переменные
(например, переменная в MPI-объявленном блоке COMMON
),
полагаясь на факт, что целевой компилятор передает данные через адрес. Внутри
подпрограммы, этот адрес может быть извлечен некоторым механизмом вне
стандарта языка ФОРТРАН (например, дополнениями языка ФОРТРАН или
реализацией функции в Си). []