Skip to content

Serial + Parallel convolution, pipeline and benchmarks (Tasks 1, 2, 3)#1

Merged
shakareem merged 18 commits intomainfrom
work
Oct 22, 2025
Merged

Serial + Parallel convolution, pipeline and benchmarks (Tasks 1, 2, 3)#1
shakareem merged 18 commits intomainfrom
work

Conversation

@shakareem
Copy link
Owner

@shakareem shakareem commented Sep 19, 2025

Сделано

cli-приложение с возможностью последовательного и параллельного применения свёртки (convolution) одного или нескольких изображений. Свертка нескольких изображений так же распараллелена по этапам (чтение -> свёртка -> запись)

Пайплайн обработки изображений

  • Реализован модульный конвейер с тремя независимыми этапами:

    1. Чтение изображений с диска в каналы.
    2. Свёртка изображений с использованием разных стратегий.
    3. Запись результатов обратно на диск.
  • Использованы корутины и каналы для потоковой обработки и контроля загрузки памяти.

  • Добавлена поддержка настройки размера буфера между этапами пайплайна.

Режимы свёртки

  • SERIAL – базовая последовательная реализация.
  • PIXELWISE – попиксельное распараллеливание (много корутин).
  • COLUMNS – распараллеливание по столбцам.
  • ROWS – распараллеливание по строкам.
  • ALLPROCESSORS – использование всех доступных воркеров.

Бенчмарки

  • Разные режимы (SERIAL, PIXELWISE, COLUMNS, ROWS, ALLPROCESSORS).

  • Разные размеры буфера ( 1, 4, 8, 16, 32).

  • Многократные прогоны (по умолчанию 5) для усреднения.

  • Результаты сохраняются в:

    • benchmark.csv (таблица с данными).
    • benchmark.png (график).

Наблюдения

  • Режимы распараллеливания:

    • Для маленьких изображений параллелизация даёт небольшой выигрыш (перекрывается накладными расходами).
    • Для больших изображений и свёрток режимы COLUMNS, ROWS и ALLPROCESSORS показывают заметное ускорение по сравнению с SERIAL.
  • PIXELWISE полезен скорее как тестовый кейс для измерения накладных расходов, чем как практичный режим.

Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
+ test for equality with serial convolution, + remove classses for future async pipeline

Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
@shakareem shakareem changed the title WIP Serial + Parallel convolution, pipelina and benchmarks (Tasks 1, 2, 3) Sep 22, 2025
@shakareem shakareem changed the title Serial + Parallel convolution, pipelina and benchmarks (Tasks 1, 2, 3) Serial + Parallel convolution, pipeline and benchmarks (Tasks 1, 2, 3) Sep 22, 2025
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
Signed-off-by: Karim Shakirov <karimshak06@gmail.com>
@shakareem shakareem merged commit d39288e into main Oct 22, 2025
1 check passed
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