next up previous contents
Next: Дополнительная поддержка для встроенных Up: Поддержка языка ФОРТРАН Previous: Основная поддержка ФОРТРАНa   Contents

Расширенная поддержка ФОРТРАНa.

Реализации расширенной поддержки должны предоставлять:
  1. Модуль MPI
  2. Набор новых функций для поддержки внутренних числовых типов ФОРТРАНa, включая параметризованные типы: MPI_SIZEOF, MPI_TYPE_MATCH_SIZE, MPI_TYPE_CREATE_F90_INTEGER, MPI_TYPE_CREATE_F90_REAL и MPI_TYPE_CREATE_F90_COMPLEX. Параметризованные типы -
    внутренние типы ФОРТРАНa, которые определены с использованием типа параметров KIND. Они детально описаны в главе 8.2.5.
Кроме того, высококачественные реализации должны предоставлять механизм предотвращения фатальных ошибок несовпадений типов для функций MPI с выбором аргументов.

Модуль MPI.
Реализация MPI должна предоставлять модуль с названием MPI, который может быть использован в программе на языке ФОРТРАН90. Этот модуль должен:

Реализация MPI может предоставить в модуле и другие возможности, которые повышают эффективность использования MPI, поддерживая соответствие стандарту. Например он может:

Совет разработчикам: Соответствующий INTENT может отличаться от того, который был описан в общем интерфейсе ФОРТРАНa. Разработчики должны выбирать его так, чтобы функция соответствовала стандарту MPI.[]

Объяснение: Поведение, описанное в общем интерфейсе MPI может не всегда соответствовать правильному INTENT для ФОРТРАНa. Например, прием в буфер, определенный типом с абсолютным адресом может потребовать ассоциировать MPI_BOTTOM с аргументом по умолчанию OUT. Более того, ``константы'', такие как MPI_BOTTOM и MPI_STATUS_IGNORE - на самом деле не константы ФОРТРАНa, а ``специальные адреса'', используемые нестандартным образом. В конце концов, общее поведение MPI-1 в некоторых местах было изменено для MPI-2. Например MPI_IN_PLACE изменяет аргумент OUT на INOUT.[]

Приложения могут использовать модуль MPI либо заголовочный файл mpif.h. Реализация может потребовать использования модуля для предотвращения ошибки несовпадения типов. (см. ниже)

Совет пользователям: Рекомендуется чтобы модуль MPI использовался даже если не является необходимым использовать его на конкретной системе. Использование модуля добавляет несколько потенциальных преимуществ перед использованием заголовочного файла.[]

Должна быть возможность компоновки вместе наборов функций, из которых некоторые используют USE mpi, а некоторые INCLUDE mpif.h.

Отсутствие проблем с несовпадением типов для процедур с выбором аргументов. Высококачественная реализация MPI должна предоставить механизм, гарантирующий, что выбор аргументов MPI не вызовет фатальных ошибок во время компиляции или выполнения из-за несовпадения типов. Реализация MPI может потребовать от приложений использования модуля mpi или компиляции с соответствующим флагом, с целью избавиться от проблем с соответствием типов.

Совет разработчикам: В случае, если компилятор не генерирует ошибок, с текущим интерфейсом ничего не надо делать. В случае если компилятор может выдать ошибку, можно использовать набор перегружаемых функций (см. M. Hennecke [11]). Даже если компилятор не выдает ошибки, могут потребоваться явные интерфейсы для всех функций для нахождения ошибок в списке аргументов. Кроме того, явные интерфейсы, сообщающие INTENT, могут уменьшить количество копирований для аргументов BUF(*).[]



Alex Otwagin 2002-12-10