next up previous contents
Next: Номер версии Up: Управление исполнительной средой MPI Previous: Таймеры и синхронизация.   Contents

Подготовка к запуску параллельных программ

Одна из целей разработи 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.[]


next up previous contents
Next: Номер версии Up: Управление исполнительной средой MPI Previous: Таймеры и синхронизация.   Contents
Alex Otwagin 2002-12-10