Skip to content

Исхаков Дамир. Технология ALL. Линейная фильтрация изображений (вертикальное разбиение). Ядро Гаусса 3x3. Вариант 25#1122

Merged
allnes merged 6 commits into
learning-process:masterfrom
Chokoladicus:iskhakov_d_vertical_gauss_filter_all
May 17, 2026

Conversation

@Chokoladicus
Copy link
Copy Markdown
Contributor

@Chokoladicus Chokoladicus commented May 15, 2026

Описание

  • Задача: Линейная фильтрация изображений (вертикальное разбиение). Ядро Гаусса 3x3.
  • Вариант: 25
  • Технология: ALL (MPI и OpenMP)
  • Описание

Была реализована задача "Линейная фильтрация изображений (вертикальное разбиение). Ядро Гаусса 3x3". Алгоритм представляет собой параллельную реализацию обработки матрицы используя технологий MPI и OpenMP с помощью вертикального разбиения (изображение в оттенках серого) с использованием ядра Гаусса

{{1, 2, 1}
{2, 4, 2}
{1, 2, 1}}

параллельным перебором пикселей матрицы, вычисляя сумму значений и деление итогового результата на 16 (согласно условию ядра Гаусса).

Обработка границ реализована с помощью отражения. Пример: Если пиксель, для которого мы высчитываем новое значение находится на границе, а левее или правее него матрица кончается, алгоритм берёт значение равное отраженному значению, то есть не по индексу 0 - 1, а по индексу 1 или же не 255 + 1, а 255 - 1. Это необходимо для корректной обработки границ и углов

Параллелизм организован в два уровня. На верхнем уровне с помощью MPI изображение делится между процессами: каждый процесс получает непрерывный диапазон столбцов («вертикальную полосу»). Распределение столбцов производится равномерно, остаток распределяется между первыми процессами. Каждый MPI-процесс работает с полной копией исходного изображения, поэтому для вычислений на границах полосы используется отражение от глобальных границ матрицы; обмен граничными столбцами не требуется. На нижнем уровне внутри каждого MPI-процесса задействуется OpenMP: число потоков задаётся через omp_set_num_threads, и с помощью #pragma omp parallel for столбцы локальной полосы обрабатываются параллельно. Каждый поток вычисляет значения пикселей только в своих столбцах, читая исходные данные (которые доступны всем) без необходимости синхронизации. После завершения вычислений результаты со всех процессов собираются на процессе 0, который формирует итоговое изображение, и затем рассылаются обратно всем процессам через MPI_Bcast, чтобы каждый процесс имел полный результат.


Чек-лист

  • Статус CI: Все CI-задачи (сборка, тесты, генерация отчёта) успешно проходят на моей ветке в моем форке
  • Директория и именование задачи: Я создал директорию с именем <фамилия>_<первая_буква_имени>_<короткое_название_задачи>
  • Полное описание задачи: Я предоставил полное описание задачи в теле pull request
  • clang-format: Мои изменения успешно проходят clang-format локально в моем форке (нет ошибок форматирования)
  • clang-tidy: Мои изменения успешно проходят clang-tidy локально в моем форке (нет предупреждений/ошибок)
  • Функциональные тесты: Все функциональные тесты успешно проходят локально на моей машине
  • Тесты производительности: Все тесты производительности успешно проходят локально на моей машине
  • Ветка: Я работаю в ветке, названной точно так же, как директория моей задачи
    (например, nesterov_a_vector_sum), а не в master
  • Правдивое содержание: Я подтверждаю, что все сведения, указанные в этом pull request, являются точными и
    достоверными

@codecov-commenter
Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 94.64286% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.63%. Comparing base (29821f1) to head (57039b1).
⚠️ Report is 221 commits behind head on master.

Files with missing lines Patch % Lines
...khakov_d_vertical_gauss_filter/all/src/ops_all.cpp 94.64% 1 Missing and 2 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1122      +/-   ##
==========================================
- Coverage   83.69%   83.63%   -0.06%     
==========================================
  Files         669      741      +72     
  Lines       34251    39315    +5064     
  Branches    14301    16403    +2102     
==========================================
+ Hits        28665    32880    +4215     
- Misses       3807     4396     +589     
- Partials     1779     2039     +260     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@allnes allnes merged commit 3bce118 into learning-process:master May 17, 2026
34 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants