В данной программе определен сетевой тип HeteroNet. Первый
параметр (с именем n) является целым скалярным — это число вир-
туальных процессоров сети. Второй параметр — v — состоит из n
элементов типа double. Он используется для спецификации отно-
сительных обьемов вычислений, выполняемых различными вирту-
альными процессорами. Определение сетевого типа HeteroNet со-
держит необычное обьявление node{I>=0: v[i];}, которое озна-
чает, что для любого I>=0 относительный обьем вычислений, вы-
полняемый виртуальным процессором с координатой I, задается
значением v[I]. Для параллельного вычисления общей точки мас-
сы металлической конструкции создается сеть mynet, состоящая из
N виртуальных процессоров, каждый из которых вычисляет массу
одного "рельса". Вычисление массы производится интегрировани-
ем с фиксированным шагом функции плотности Density по объ-
ему рельса. Поскольку обьем вычислений пропорционален объему
рельса, то в качестве второго параметра сети mynet использует-
ся "размазанный" массив nolumes, i-й элемент которого содержит
объем i-го рельса.
Отображение виртуальных процессоров на компьютеры осно-
вывается на информации об их производительности. По умолча-
нию система mpC использует одну и ту же информацию о про-
изводительности всех участвующих в выполении программы про-
цессоров. Эта информация появляется при установке системы mpC
выполнением специальной тестовой программы. Однако, подобная
информация является довольно грубой и может значительно отли-
чаться от значений, реально достигаемых процессорами при вы-
полнении кода данной программы. Поэтому mpC предоставляет
специальный оператор recon, позволяющий программисту изме-
нять оценку производительности компьютеров, настраивая систе-
му на вычисления, которые предполагается выполнить. В примере
этот оператор стоит перед определением сети mynet и непосред-
ственно перед процедурой MassofRail с фактическими аргумента-
ми 0.2, 0.04, 0.05, 0.005.
В результате время, затраченное каждым процессором, исполь-
зуется для обновления оценки их производительности. Заметим,
что основной обьем вычислений как раз и приходится на выполне-
ние процедуры MassOfRail, ибо именно он и составляет основные
вычисления в сети mynet.
184