next up previous contents
Next: Взаимодействие с сигналами Up: Реализация Previous: Реализация   Contents

Независимость от основных подпрограмм во время выполнения

Программы MPI требуют, чтобы библиотечные подпрограммы, которые являются частью среды основного языка (типа WRITE в ФОРТРАН и printf() и malloc() в ANSI Си) были выполнены после MPI_INIT и прежде, чем сработает независимо MPI_FINALIZE и что их завершение является независимым от действия других процессов в программе MPI.

Обратите внимание, что это никоим образом не предотвращает создание библиотечных подпрограмм, которые обеспечивают параллельные услуги, операции которых коллективны. Однако, следующая программа, как ожидается, завершится в среде ANSI Си независимо от размера
MPI_COMM_WORLD (предполагаем, что printf() является доступным в выполняющихся узлах).

int rank; MPI_Init((void *)0, (void *)0); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) printf("Starting program\n"); MPl_Finalize();

Соответствующие программы языка С++ и ФОРТРАН, как ожидается, также завершатся.

Пример того, что не требуется - любое упорядочение действия этих подпрограмм, вызываемых несколькими задачами. Например, MPI не делает ни требования, ни рекомендации для вывода из следующей программы (снова предполагаем, что ввод-вывод является доступным в выполняющихся узлах).

MPI_Comm_rank(MPI_COMM_WORLD, &rank); printf ("Output from task rank %d\n", rank);

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



Alex Otwagin 2002-12-10