));
63 TotalSum : = TotalSum + S;
64 END;
65 END;
Файл SummerBody.pas: тіло процесу Summer
У рядках 61-64 збираються часткові суми від всіх робочих процесів і підсумовуються у змінній TotalSum. Число часткових сум записуємо в змінну N з порту impNUM_ITER (рядок 59).
Компіляція вузлових процесів
У середовищі Delphi необхідно відкомпілювати файли Manager.dpr, Worker.dpr і Summer.dpr. Після компіляції повинні з'явиться три нових файлу: Manager.dll, Worker.dll, Summer.dll. br/>
Завантаження і виконання програми
Спочатку на комп'ютерах мережі потрібно запустити програму-монітор. Перепишемо откомпіліроанние файли і файл Pi.dgl з текстом графа потоку даних на мовою DGL в один каталог і запустимо диспетчер, вказавши Pi.dgl в як параметр.
Література
[1] Роберт Беб, В«Програмування на паралельних обчислювальних системахВ» - Москва: Світ, 1991
[2] А.І.Водяхо, В«Високопродуктивні системи обробки даних В»- Москва: Вища школа, 1997
Додаток А
Синтаксис мови DGL
DGL = ["DATAFLOW GRAPH" [identifier] ";"] p> {Definitions}
{ProcessDecl}
Definitions = identifier "=" ConstExpr
ProcessDecl = "PROCESS" identifier ["AT" path]
["[" NumCopies "]" ] p> {"EXPORT:" {ExportDecl} |
"IMPORT:" {ImportDecl}
}
"END"
ExportDecl = identifier ["[" NumCopies "]"] p> "->"
identifier ["[" Expression "]"] p> ":"
identifier ";"
ImportDecl = identifier ";"
NumCopies = ConstExpr
ConstExpr = Expression
Expression = Term [AddOp Term]
Term = Fact [MulOp Fact]
Fact = number | identifier | "(" Expression ")"
AddOp = "+" | "-"
MulOp = "*" | "/"
Зауваження:
1) number - ціле позитивне число
2) усі операції мови цілочисельні
3) значення виразу NumCopies має бути більше нуля, в іншому випадку воно замінюється на число 1
4) у виразах можна використовувати наступні змінні: с - номер поточного каналу, р - номер поточної копії процесу
[AK1]