Task 3 submission#3
Open
alken1t15 wants to merge 2 commits into
Open
Conversation
cac4c2f to
e748b3c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что сделано
Реализована потоковая обработка набора цветных RGB-изображений.
Основная логика:
последовательная свёртка из прошлых заданий оставлена как baseline;
переиспользован код загрузки, сохранения, фильтров и параллельной обработки из заданий 1 и 2;
добавлен pipeline для обработки директории изображений;
чтение, свёртка и запись разделены на отдельные стадии;
reader читает изображения и кладёт задачи в ограниченную очередь;
несколько convolution worker’ов обрабатывают изображения;
writer сохраняет результат в выходную директорию;
относительные пути вложенных файлов сохраняются;
очереди ограничены через queueCapacity, чтобы reader не мог занять всю память.
Добавлены режимы pipeline:
sequential — каждый worker обрабатывает своё изображение последовательной реализацией;
parallel — каждый worker дополнительно параллелит свёртку одного изображения.
В parallel-режиме переиспользованы стратегии из задания 2:
pixels — потоки берут пиксели через общий атомарный счётчик;
rows — изображение делится на горизонтальные полосы;
columns — изображение делится на вертикальные полосы;
grid — изображение делится на прямоугольные блоки.
Добавлен CLI:
apply-batch для обработки директории изображений;
benchmark-batch для замера времени batch pipeline;
выбор количества worker’ов;
выбор размера очереди;
выбор sequential или parallel режима;
выбор стратегии и количества внутренних потоков для parallel-режима.
Добавлены тесты:
batch pipeline совпадает с последовательной обработкой каждого файла;
pipeline сохраняет относительные директории;
pipeline игнорирует неподдерживаемые файлы;
последовательная свёртка дополнительно проверяется на разных размерах изображений и ядер;
проверяется композиция противоположных shift-фильтров до identity;
параллельная свёртка сравнивается с последовательной для разных стратегий, фильтров, размеров и числа потоков;
параллельный median filter сравнивается с последовательным для разных окон и стратегий.
Проведены эксперименты:
использованы те же изображения, что и в задании 2: 256.png, 512.jpg, 1024.jpg, 2048.jpg;
использованы режимы sequential и parallel;
проверены worker’ы: 1, 2, 4, 8;
проверены внутренние потоки: 1, 2, 4, 8;
проверены размеры очереди: 1, 2, 8;
сравнивались стратегии pixels, rows, columns, grid;
использовано 10 фильтров из 19;
всего проведено 54 сценария;
каждый сценарий запускался 12 раз;
всего 648 batch-запусков и 2592 обработки изображений.