The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа
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



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру