| |
Одна из целей разработи MPI состоит в том, чтобы достигнуть переносимости исходного текста. Это означает, что программа, написанная с использованием MPI, не должна требовать никаких изменений исходного текста при перемещении ее от одной системы к другой.
Для реализации переносимости необходимо, чтобы перед запуском параллельной программы были сделаны некоторые установки, которые обеспечиваются несколькими функциями MPI. К ним прежде всего относится функция инициализации MPI_INIT.
Синтаксис функции MPI_INIT представлен ниже.
MPI_INIT() int MPI_Init(int *argc, char ***argv) MPI_INIT(IERROR) NTEGER IERROR void Init(int& argc, char**& argv) void Init()
Эта процедура должна быть вызвана прежде, чем будет вызвана какая - либо другая MPI подпрограмма (кроме MPI_INITIALIZED). Она должна быть вызвана всего один раз; последующие вызовы неверны (см. MPI_INITIALIZED). Все MPI программы должны содержать вызов MPI_INIT. Версия для ANSI Си принимает argc и argv, которые являются аргументами к main:
int main(argc, argv) int argc; char **argv; { MPI_Init(&argc, &argv); /* анализ аргументов */ /* головная программа */ MPI_Finalize(); /* смотри ниже */ }
Версия для языка ФОРТРАН содержит только IERROR.
Реализация MPI не требует, чтобы аргументы в вызове для Си были аргументами main.
Объяснение: MPI_INIT может использовать командную строку аргументов для инициализации среды MPI. Они передаются по ссылке, чтобы позволить реализации MPI обеспечить их в среде, где аргументы командной строки не предусмотрены для main.[]
Синтаксис функции MPI_FINALIZE представлен ниже.
MPI_FINALIZE() int MPI_Finalize(void) MPI_FINALIZE(IERROR) INTEGER IERROR void Finalize()
Эта процедура очищает все состояния MPI. Никакая другая процедура MPI (даже MPI_INIT) не может быть вызвана после выполнения этой процедуры. Пользователь обязан гарантировать, что все незаконченные обмены будут завершены прежде, чем будет вызвана MPI_FINALIZE.
Синтаксис функции MPI_INITIALIZED представлен ниже.
MPI_INITIALIZED(flag)
OUT | flag | параметр flag принимает значение true, если MPI_INIT была вызвана и false в противном случае. |
int MPI_Initialized(int *flag)
MPI_INITIALIZED(FLAG, IERROR)
LOGICAL FLAG
INTEGER IERROR
bool MPI::Is_initialized()
Процедура MPI_INITIALIZED может использоваться для определения
того, был ли вызван
MPI_INIT. Это единственная процедура,
которая может быть вызвана перед MPI_INIT.
Синтаксис функции MPI_ABORT представлен ниже.
MPI_ABORT(comm, errorcode)
IN | comm | коммуникатор прерываемой задачи | |
IN | errorcode | код ошибки для возврата в среду исполнения |
int MPI_Abort(MPI_Comm comm, int errorcode)
MPI_ABORT(COMM, ERRORCODE, IERROR)
INTEGER COMM, ERRORCODE, IERROR
bool MPI::Is_finalized()
Процедура MPI_ABORT пробует наилучшим способом прервать выполнение всех задач в группе коммуникатора comm. Эта процедура не требует, чтобы исполнительная среда производила какие-либо действия с кодом ошибки. Однако, среда Unix или POSIX должна обрабатывать его как return errorcode из главной программы или abort (errorcode).
Реализация MPI должна определить поведение MPI_ABORT по крайней мере для коммуникатора MPI_COMM_WORLD. Реализация MPI может игнорировать аргумент comm и действовать, как если бы коммуникатором был MPI_COMM_WORLD.
Объяснение: Коммуникационный аргумент предусмотрен для будущих
расщирений MPI в отношении среды исполнения, например, для
динамического управления процессами. Это, в частности, позволяет
(но не требует) реализации MPI прекратить действие подмножества
MPI_COMM_WORLD.[]
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |