The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа
next up previous contents
Next: Семантические термины Up: Термины и соглашения в Previous: Обозначения в документе   Contents

Описание процедур

Процедуры MPI описываются с помощью независимых от языка обозначений. Аргументы процедурных вызовов маркируются через IN, OUT или INOUT. Это означает, что:

Имеется один специальный случай: если аргумент является дескриптором скрытого объекта (этот термин определен в разделе 2.4.1) и объект модифицируется процедурой, тогда аргумент маркируется как OUT. Он маркируется таким образом, даже если сам дескриптор не модифицируется - здесь атрибут OUT используется, чтобы указать, что модифицирована дескрипторная ссылка.

Из-за повышенной возможности ошибок в MPI избегают использования аргумента INOUT для самых больших экстентов, особенно для скалярных аргументов.

Общим явлением для функций MPI является аргумент, который используется как IN некоторыми процессами и как OUT - другими процессами. Такой аргумент синтаксически является и маркируется как INOUT аргумент, хотя семантически он не используется ни в одном вызове одновременно как входной и выходной.

Часто возникает другая ситуация, когда значение аргумента необходимо только части процессов. Когда аргумент не является существенным для процесса, тогда в качестве аргумента может быть передано произвольное значение.

Аргументы типа OUT или типа INOUT не могут заменяться любым другим аргументом, посланным в MPI процедуру. Пример переименования в языке Си приводится ниже. Если мы определяем процедуру в языке Си таким образом:

void copyIntBuffer(int *pin, int *pout, int len)
{
    int i;
    for (i=0; i<len; ++i) *pout++ = *pin++;
}

тогда для обращения к ней в следующем фрагменте кода используются аргументы с другими именами.

int a[10];
copyIntBuffer(a, a+3, 7);

Хотя язык Си позволяет это, такое использование процедур в MPI запрещено, если они не описаны другим образом. Заметим, что язык ФОРТРАН запрещает такое переименование.

Все MPI функции сначала описываются в языково - независимой нотации. Затем ниже идет версия функции для ANSI Си, и еще ниже - версия той же функции для языков ФОРТРАН77 и С++.



Alex Otwagin 2002-12-10



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру