| |
Программы 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);
К тому же вызовы, которым отказано из-за нехватки ресурсов, или другая ошибка не рассматриваются здесь нарушением требований (однако, требуется их завершение, не обязательно успешное).
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |