Skip to content

Comments

Implement bmp convolution tool#2

Merged
suvorovrain merged 80 commits intomainfrom
stconvol
Sep 24, 2025
Merged

Implement bmp convolution tool#2
suvorovrain merged 80 commits intomainfrom
stconvol

Conversation

@suvorovrain
Copy link
Owner

@suvorovrain suvorovrain commented Sep 19, 2025

Реализован в виде CLI.

  • Общее:
    • ✅ Поддержка цветных изображений
    • ✅ Возможность выбирать различные эффекты и их силу
    • ❌ Отсутствие композиции фильтров
  • Задание 1:
    • Алгоритм свертки был взят отсюда, но была выбрана другая стратегия обработки краев.
  • Задание 2:
    • Для параллелизма использовался openmp
    • ✅ Параллелизм по пикселям
    • ✅ Параллелизм по рядам
    • ✅ Параллелизм по колонкам
    • ❌ Параллелизм по произвольным прямоугольникам
  • Задание 3:
    • Алгоритм обработки массива изображений основан на двух очередях и сущностях reader, worker, writer. Реализация очереди взята из книги The Art of Multiprocessor Programming. Глава 10.3. Реализовано с помощью pthreads
    • Есть возможность выбирать любой алгоритм, что будет использоваться сущностями worker внутри очереди
  • Тестирование:
    • ✅ Unit тесты для общих функций
    • ❌ Некоторые тесты на работоспособность линейной свертки, но могло быть и побольше
    • ✅ end-to-end тестирование для параллельной обработки

@suvorovrain
Copy link
Owner Author

suvorovrain commented Sep 21, 2025

Касательно проверок многопоточности:
Helgrind сильно-сильно ругается на мой код если запускать алгоритмы parallel_pixel\row\linear. Я поисследовал этот вопрос и пришел к выводу, что это, видимо, известная проблема helgrind'a при взаимодействии с openmp
https://stackoverflow.com/questions/10641972/helgrind-valgrind-and-openmp-c-avoiding-false-positives

На запуск linear queue Helgrind не жалуется, значит очередь написано приемлемо... наверное...

@suvorovrain suvorovrain merged commit 47634fb into main Sep 24, 2025
3 checks 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