| |
Процедуры 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 и С++.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |