next up previous contents
Next: Выбор Up: Типы данных Previous: Состояние   Contents

Именованные константы

Процедуры 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), полагаясь на факт, что целевой компилятор передает данные через адрес. Внутри подпрограммы, этот адрес может быть извлечен некоторым механизмом вне стандарта языка ФОРТРАН (например, дополнениями языка ФОРТРАН или реализацией функции в Си). []



Alex Otwagin 2002-12-10