Skip to content

Task 3 submission#3

Open
alken1t15 wants to merge 2 commits into
task2-submissionfrom
task3-submission
Open

Task 3 submission#3
alken1t15 wants to merge 2 commits into
task2-submissionfrom
task3-submission

Conversation

@alken1t15
Copy link
Copy Markdown
Collaborator

@alken1t15 alken1t15 commented May 15, 2026

Что сделано

Реализована потоковая обработка набора цветных 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 обработки изображений.

@alken1t15 alken1t15 changed the title Task 3: batch pipeline convolution Task 3 submission May 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant