The OpenNET Project / Index page

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

Каталог документации / Раздел "Программирование, языки" / Оглавление документа
next up previous contents
Next: Взаимодействие с сигналами в Up: Проблемы реализации Previous: Проблемы реализации   Contents

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

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

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

   int rank;
   MPI_Init(argc, argv);
   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
   if (rank == 0) printf("Starting program\n");
   MPI_Finalize();

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

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

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
Добавить, Поддержать, Вебмастеру