Алгоритмы параллельных вычислений и программирование. Бурова И.Г - 178 стр.

UptoLike

}
# define N 3 int[*] main(){net AnotherSimpleNet(N);
[host] mynet;
[mynet] MPC_Printf("Hallo, world! \n");
}
Здесь неявная спецификация сети заменена на явную. По умолча-
нию родитель имеет нулевые координаты в сети (иначе, например,
parent[n-1]).
§ 7. Синхронизация работы сети
Рассмотрим следующую программу.
# include <mpc.h>
# define N 5
int[*] main()
{net SimpleNet(N) mynet;
[mynet]:
{int my_coordinate;
my_coordinate=I coordof mynet;
if (my_coordinate %2==0)
MPC_Printf("Hallo, even world! \n");
[(N)mynet] MPC_Barrier();
if (my_coordinate %2==1)
MPC_Printf("Hallo, odd world! %n");
}
}
Эта программа выводит сообщение от виртуальных процессоров с
нечетными координатами только после того, как будут выведены
все сообщения от всех виртуальных процессоров с четными номе-
рами.
Следует заметить, что MPC_Barrier это сетевая функция.
Это означает, что барьер установлен только для процессоров сети
mynet.
В то время, как базовые функции выполняются для всех про-
цессов программы (это обязательное условие), сетевые функции
179