next up previous contents
Next: Коммуникации в виде дерева Up: Интерфейс передачи сообщений MPI Previous: Ввод / вывод для   Contents

Коллективные коммуникации

Производительность программы вычисления интеграла можно значительно повысить. Например, пусть программа выполняется на восьми процессорах.

Все процессы начинают выполнять программу практически одновременно. Однако после выполнения основных задач (вызовы
MPI_Init(), MPI_Comm_size() и MPI_Comm_rank()) процессы 1 - 7 будут простаивать, в то время как процесс 0 будет собирать входные данные. После того как процесс 0 примет входные данные, процессы большего ранга должны продолжать ожидать, пока процесс 0 рассылает входные данные всем процессам. Подобная неэффективность наблюдается и в конце программы, когда процесс 0 собирает и суммирует значения локальных интегралов.

Основной задачей организации параллельной обработки является равномерное распределение загрузки по всем процессорам системы. Если, как в приведенном случае, основная нагрузка ложится на один из процессов, то в некоторых случаях будет эффективнее использовать однопроцессорную версию.



Subsections

2004-06-22