Skip to content

Feat/parallel convolution#2

Open
vlapugb wants to merge 4 commits into
mainfrom
feat/parallel_convolution
Open

Feat/parallel convolution#2
vlapugb wants to merge 4 commits into
mainfrom
feat/parallel_convolution

Conversation

@vlapugb
Copy link
Copy Markdown
Collaborator

@vlapugb vlapugb commented Apr 30, 2026

Описание

Добавлена параллельная версия свёртки с использованием OpenMP. Общая логика свёртки вынесена в общий рантайм (convolution_run), который отделяет выделение копии исходного изображения от непосредственного применения фильтра. Поверх него реализованы четыре стратегии параллелизма: разбиение по строкам, столбцам, по отдельным пикселям (schedule(static)) и по прямоугольным блокам (collapse(2)).

CLI расширен флагом -p <mode> для выбора режима исполнения. В app.c добавлен замер времени обработки. Последовательная реализация (-s) сохранена как один из режимов.

Что добавлено

  • Общий рантайм свёрткиconvolution_run() + convolution_context_t, разделение source/destination, функции apply_pixel, apply_rect, apply_rows, apply_cols. Позволяет переиспользовать одну и ту же логику в последовательной и параллельной реализации.

  • Четыре стратегии параллелизма (OpenMP):

    • rows — каждая нить обрабатывает непрерывную полосу строк
    • cols — каждая нить обрабатывает непрерывную полосу столбцов
    • pixels#pragma omp parallel for schedule(static) по всем пикселям
    • grid#pragma omp parallel for collapse(2) schedule(static) с размерами 32×128
  • CLI — флаг -p <mode> вместо -s для выбора режима (cols | rows | raws | pixels | grid | rectangle | random), execution_mode_t в cli_request_t

  • Замер времениapp.c выводит processing time: X.XXX ms

  • Сборочная инфраструктура — OpenMP линковка, пути к новым исходникам

Тесты

Тесты для параллельной реализации не добавлялись — корректность обеспечивается тем, что все четыре стратегии используют общий convolution_apply_pixel_unchecked() (совпадает с sequential). На бенчмарках дополнительно проверяется, что все режимы дают идентичный вывод.

@vlapugb vlapugb force-pushed the feat/parallel_convolution branch from a7a20bf to 842e73d Compare April 30, 2026 18:33
@vlapugb
Copy link
Copy Markdown
Collaborator Author

vlapugb commented Apr 30, 2026

@vkutuev @Almazis PR готов к проверке.

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