next up previous contents
Next: Типы данных Up: Термины и соглашения MPI-2 Previous: Спецификация процедуры   Contents

Семантические термины

При обсуждении процедур MPI используются следующие семантические термины.

неблокирование
Процедура является неблокирующей, если возврат из нее выполняется прежде, чем операция, на которую воздействует вызов процедуры, завершена, и прежде, чем пользователю позволено многократно использовать ресурсы (например, буферы) указанные в вызове. Запрос неблокирования начат вызовом, который инициализирует его, например, MPI_ISEND. Слово законченный используется применительно к операциям, запросам и связям. Операция завершена, когда пользователю позволено многократно использовать ресурсы, и любому буферу вывода быть модифицированным; то есть вызов MPI_TEST возвратит flag = true. Запрос закончен вызовом ждать, который возвращает состояние или вызовом проверить или получить состояние, который возвращает flag = true. Этот вызов завершения имеет два эффекта: состояние извлечено из запроса; в случае проверить и ждать, если запрос был непостоянен, оно освобождено.

cвязь завершена
, когда все участвующие операции завершены.

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

локальный
Процедура является локальной, если завершение процедуры не зависит от выполнения вызовов MPI другими процессами.

нелокальный
Процедура является нелокальной, если завершение операции может требовать выполнения некоторой процедуры MPI на другом процессе. Такая операция может требовать связи, встречающейся с другим процессом пользователя.

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

предопределенный
Предопределенный тип данных - тип данных с предопределенным (постоянным) именем (типа MPI_INT, MPI_FLOAT_INT или MPI_UB) или тип данных, созданный с помощью вызовов MPI_TYPE_CREATE_F90_INTEGER, MPI_TYPE_CREATE_F90_REAL или
[]MPI_TYPE_CREATE_F90_COMPLEX. Первый тип будет назван, а второй из типов неназван.

полученный
Полученный тип данных - любой тип данных, который не предопределен.

переносимый
Тип данных является переносимым, если он - предопределенный тип данных или получен из переносимого типа данных, используя только следующие конструкторы типов: MPI_TYPE_CONTIGUOUS, MPI_TYPE_VECTOR, MPI_TYPE_INDEXED, MPI_TYPE_INDEXED_BLOCK,
[]MPI_TYPE_CREATE_SUBARRAY, MPI_TYPE_DUP или MPI_TYPE_CREATE_DARRAY. Такой тип данных переносимый, потому что все смещения в типе данных - в терминах степеней одного предопределенного типа данных. Поэтому, если такой тип данных удовлетворяет размещению данных в одной памяти, он удовлетворял бы соответствующему размещению данных в другой памяти, если использовались те же самые объявления, даже если эти две системы имеют различные архитектуры. С другой стороны, если тип данных был создан, используя MPI_TYPE_CREATE_HINDEXED, MPI_TYPE_CREATE_HVECTOR или MPI_TYPE_CREATE_STRUCT, то тип данных содержит явные смещения байта (например, обеспечивая дополнение, чтобы выполнить ограничения выравнивания). Эти смещения вряд ли будут выбраны правильно, если они соответствуют размещению данных на одной памяти, но используются для размещений данных на другом процессе, выполняющемся на процессоре с другой архитектурой.

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



Alex Otwagin 2002-12-10