
- •Оглавление
- •Глава 15 Потоковые и редукционные вычислительные системы 1
- •Глава 15 Потоковые и редукционные вычислительные системы
- •Вычислительные системы с управлением вычислениями от потока данных
- •Вычислительная модель потоковой обработки
- •Архитектура потоковых вычислительных систем
- •Статические потоковые вычислительные системы
- •Динамические потоковые вычислительные системы
- •Архитектура потоковых систем с помеченными токенами
- •Макропотоковые вычислительные системы
- •Гиперпотоковая обработка
- •Вычислительные системы с управлением вычислениями по запросу
Вычислительные системы с управлением вычислениями по запросу
В системах с управлением от потока данных каждая команда, для которой имеются все необходимые операнды, немедленно выполняется. Однако для получения окончательного результата многие из этих вычислений оказываются ненужными. Отсюда прагматичным представляется иной подход, когда вычисления инициируются не по готовности данных, а на основе запроса на данные. Такая организация вычислительного процесса носит название управления вычислениями по запросу (demand-driven control). В ее основе, как и в потоковой модели (data-driven control), лежит представление вычислительного процесса в виде графа. В потоковой модели узлы вверху графа запускаются раньше, чем нижние. Это — нисходящая обработка. Механизм управления по запросу состоит в обработке вершин потокового графа снизу вверх путем разрешения запуска узла, лишь когда требуется его результат. Данный процесс получил название редукции графа, а ВС, оперирующая в режиме снизу вверх, называется редукционной вычислительной системой.
Математическую основу редукционных ВС составляют лямбда-исчисления, а для написания программ под такие системы нужны так называемые функциональные языки программирования (FP, Haskell и др.). На функциональном языке все программы представляются в виде выражений, а процесс выполнения программы заключается в определении значений последних (это называется оценкой выражения). Оценка выражения производится посредством повторения операции выбора и упрощения тех частей выражения, которые можно свести от сложного к простому (такая часть выражения называется редексом, причем сам редекс также является отдельным выражением). Операция упрощения цией. Процесс редукции завершается, когда преобразованное редукцией выражение больше не содержит редекса. Выражение, не содержащее редекса, называется формой.
В редукционной ВС вычисления производятся по запросу на результат операции. Предположим, что вычисляется выражение а = (b +1) х с — .В случае потоковых моделей процесс начинается с самых внутренних операций, а именно с параллельного вычисления (b + 1) и d/c. Затем выполняется операция умножения 1) х с и, наконец, самая внешняя операция — вычитание. Такой род вычислений часто называют энергичными вычислениями (eager evaluation).
При вычислениях, управляемых запросами, все начинается с запроса на результат а, который включает в себя запрос на вычисление выражений (Ъ + 1) х с и d/c, а те, в свою очередь, формируют запрос на вычисление b + 1, то есть на операцию самого внутреннего уровня. Результат возвращается в порядке, обратном поступлению запросов. Отсюда название ленивые вычисления (lazy evaluation), поскольку операции выполняются только тогда, когда их результат требуется другой команде. Редукционные вычисления, естественно, согласуются с концепцией функционального программирования, упрощающей распараллеливание программ.