Конвейерная обработка
Связанные термины: pipeline, workflow, Pipes and Filters pattern.
Требования
Конвейер состоит из связанных между собой узлов. Узел характеризуется набором
входных и выходных каналов, по которым могут передаваться объекты. Узел
ожидает появления определенного набора объектов на своих входных каналах, после
чего проводит вычисления и порождает объект(-ы) на своих выходных каналах (не
обязательно всех). Например, узел "сумматор" имеет два входных канала и один
выходной. Получая по одному объекту с каждого входного канала он их суммирует и
результат отправляет в выходной канал. При этом, если входные каналы не будут
синхронизованы, то в одном из них могут "скапливаться" данные, ожидающие
обработки.
Определите проблемно-специфичный язык (DSL) для работы с конвейерными схемами
обработки данных, поддерживающий следующие элементы:
- узлы с набором входных и выходных каналов;
- статическую типизацию каналов;
- формирование конвейера в форме связанных узлов в соответствии с типизацией;
- запуск конвейера и обработку данных;
- параллельное исполнение отдельных узлов конвейера;
- использование одинаковых узлов для формирования разных конвейеров.
Вариант модельной задачи
Продемонстрируйте работу разработанной вычислительной модели на примере
обработки фотографий. Достаточно симулировать работу фильтров/преобразований
без их реального использования. Вместо изображений можно использовать файлы с
метаинформацей о том, какие преобразования были выполнены.
Типы фильтров:
- преобразование 1-в-1 (т.е. без изменения типа объекта): устранение шумов, blur и т.д.
- преобразование типа: png->jpg и т.д.
- преобразование n-в-1 (объекты поступают из одного канала): сшивка панорам, HDR-преобразование
- преобразование 1-в-n: нарезка на области
- выбор одного из n (объекты поступают из разных каналов): пытаемся устранить
шумы различными методами, дальше сравниваем результаты, выбираем лучший.
Допускается придумать свою модельную задачу, согласовав ее с преподавателем.
Дополнительные требования
Обеспечьте поддержку следующих элементов:
- настраиваемые узлы, параметры которых можно менять в уже созданном
конвейере;
- конвейеры с циклами;
- признак окончания работы конвейера (обратите внимание, что конвейер может
прийти в состояние, когда его работа никогда не завершится, в этом случае
необходимо диагностировать ошибку);
- продемонстрируйте работу дополнительных элементов на модельной задаче;
- многопоточные узлы (для модельной задачи это означает, что можно
обрабатывать несколько фотографий одновременно), не нарушающие порядок.