Динамические потоковые вычислительные системы Альперин Борис, 12226 Статическая dataflow-архитектура • Каждый вычислительный узел представлен в единственном экземпляре • Число узлов заранее известно • Число токенов заранее известно • Реализация - MIT Static Dataflow Machine (1974) Динамическая dataflow-архитектура • Каждый узел может иметь множество экземпляров • Для различения экземпляров токена вводится новое поле – контекст Новые возможности: • Рекурсия – узел может направлять токен в свою копию • Поддержка процедур • Распараллеливание циклов. Контекст – номер итерации Пример 1 – числа Фиббоначи int fib [MAX_I]; fib [0] = 1; fib [1] = 1; for (i = 2; i < MAX_I; i++) { fib [i] = fib [i-1] + fib [i-2]; } Пример 1 – числа Фиббоначи узел fib (входы: токен A, токен B) переменная i = поле_контекста(A); переменная result = поле_данных(A) + поле_данных(B); отправить_токен (данное: result, метка: host, контекст: i); если (i < MAX_I-1) отправить_токен (данное: result, метка: fib, контекст: i+1); отправить_токен (данное: result, метка: fib, контекст: i+2); конец если конец узел fib Пример 2 – сложение матриц Гибридные dataflow-архитектуры Недостатки классических dataflow-систем: • На последовательных участках графа резкое падение производительности • Загрузка исполнительных устройств далека от максимально возможной • Сложно конструировать устройства сопоставления • Нельзя организовать эффективный конвейер • Значительно выше нагрузка на коммутационную сеть Гибридные dataflow-архитектуры • Threaded dataflow – последовательные участки графа заменить тредами • Крупнозернистые потоковые архитектуры – построение графа не из операторов, а из блоков • Векторная dataflow-архитектура • Реконфигурируемые системы Спасибо за внимание