43
// ... оценочная итерация
speed = MPI_Wtime() - speed;
speed = 1.0 / speed;
// вычисление nloc
MPI_Allreduce(&speed, &allspeed, 1, MPI_DOUBLE, MPI_SUM,
MPI_COMM_WORLD);
nloc = (int) floor(n * (speed / allspeed) + 0.5);
// корректировка nloc для rank == 0, если требуется
MPI_Reduce(&nloc, &allnloc, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
if (rank == 0 && allnloc != n)
nloc += n - allnloc;
// вычисление правой границы интервала индексов
MPI_Scan(&nloc, &nright, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD);
for (int i = nright - nloc; i < nright; i++)
// ... выполнение итерации с номером i
Очевидно, подобный способ оценки производительности
для распределения нагрузки в неоднородных системах является
весьма приблизительным, вследствие чего расхождения по пол-
ному времени вычислений между процессами все равно могут
возникать. К примеру, может подвести выбор элементарной опе-
рации для оценки. Однако даже в такой ситуации это расхожде-
ние в неоднородных системах, как правило
, будет гораздо ниже,
нежели ри равномерном по числу подзадач распределении на-
грузки. Иные же пути оценки производительности (к примеру, по
отношению тактовых частот) гут еще енее с тветс овать
реальности вследствие различий, к примеру, во внутренней архи-
тектуре процессоров. Оптимальным здесь, вероятно, является оп-
ределение соотношений вычислительных скоростей опытным пу-
тем на
реальных задачах с последующим сохранением этих вели-
чин в качестве конфигурационных параметро для использования
в дальнейши схожих вычислениях о бная эксперименталь-
ная схема оценки близка к методам моделирования наподобие
Монте-Карл , которые также находят ирокое применение в
практике, несмотря на потенциальную неточность при малом ко-
личестве экспериментов.
п
мо м оо тв
в
х . П до
о ш
Все рассмотренные пути распределения нагрузки
являлись
статическими, т.е. распределение нагрузки в них происходило
один раз на весь период выполнения. На практике зачастую так-
же используется динамическое распределение. В такой ситуации
распределение очередных подзадач на процессы производится