Skip to content

Задача 4 — GPU-свёртка через OpenCL#4

Open
fUS1ONd wants to merge 8 commits into
dev/task3from
dev/task4
Open

Задача 4 — GPU-свёртка через OpenCL#4
fUS1ONd wants to merge 8 commits into
dev/task3from
dev/task4

Conversation

@fUS1ONd
Copy link
Copy Markdown
Collaborator

@fUS1ONd fUS1ONd commented May 15, 2026

По коду task4 опирается только на task1 (convolve, Kernels).

GPU-свёртка одного изображения через OpenCL: каждый пиксель результата считает отдельный work-item, граница CLAMP, биндинги — JOCL.

Что сделано

  • GPU-свёртка (core/GpuConvolution.kt + core/resources/convolution.cl): хост-код на Kotlin (контекст, буферы, запуск ядра), ядро на OpenCL C — построчно повторяет convolve() из task1
  • JOCL 2.0.6: добавлен в core как api-зависимость (libs.versions.toml)
  • CLI (task4/Main.kt): флаги -i, -o, -k
  • Тесты (GpuConvolutionTest): property-based «convolveGpu == convolve» на случайных картинках для трёх ядер (identity, gaussian, sharpen), 1000 итераций каждое
  • JMH-бенчмарки (benchmarks/GpuConvolutionBench.kt): GPU vs CPU sequential vs CPU parallel (by-rows) по двум осям — размер картинки (256→2048) и размер ядра
    (3×3, 5×5, 9×9)
  • Анализ производительности: 2 графика и выводы в docs/task4.md
  • Makefile: параметр TASK=4 для make bench и make plots — раздельный results-task4.json

Опциональные части ТЗ (4.2 гибрид GPU+CPU, 4.3 оптимизация ядра, 4.4 несколько свёрток одновременно) не делал.

Особенности окружения

Intel Graphics Compiler в WSL2 крашится при компиляции любого .cl ядра (баг драйвера). Тесты и бенчмарки прогонялись на Windows 11, Intel Arc 130T — там OpenCL работает штатно.

Как проверить

make test                                            # все тесты (GPU-тесты — на Windows)
make task4 ARGS="-i samples/img4.jpg -k motion-blur" # одну картинку через GPU
make bench TASK=4                                    # JMH-бенчмарки задачи 4 (~30 минут, только Windows)                                                           
make plots TASK=4                                    # графики в docs/plots/

@fUS1ONd fUS1ONd changed the title task4: GPU-свёртка через OpenCL Задача 4: GPU-свёртка через OpenCL May 20, 2026
@fUS1ONd fUS1ONd changed the title Задача 4: GPU-свёртка через OpenCL Задача 4 — GPU-свёртка через OpenCL May 20, 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