/ / Зменшити 1024 зображення до одного - opencl

Зменшити 1024 зображення до одного - opencl

Я прочитав статтю про зменшення масиву 1d до одного значення в openCL ( http://developer.amd.com/resources/documentation-articles/articles-whitepapers/opencl-optimization-case-study-simple-reductions/ ), і я зрозумів поняття асоціативних операторів. Поширення цієї концепції до ОДНОГО 2d-масиву також повинно бути можливим.

Але моя проблема дещо інша: У мене є ~ 1000 зображень 256x256 пікселів з 16-бітовим кожному, і я хотів би підсумувати всі ці зображення, щоб нарешті отримати середнє зображення всіх них. Звичайний графічний процесор повинен мати достатньо пам'яті (~ 130 Мб) для виконання цього завдання, але я насправді не бачу, як реалізувати ядро.

Відповіді:

1 для відповіді № 1

Подібно до того, як проблема 1D поширюється на 2D, вона може поширюватися і на 3D (що є у вас: 1000x256x256).

Були б застосовані абсолютно ті самі принципи: 1. Намагайтеся виконувати якомога більше роботи паралельно, наскільки це можливо, без суперечок з іншими робочими групами. 2. Зробіть скорочення поетапно, щоб кожен міг бути паралельним.

Можливо, ваша пропускна спроможність буде обмежена, пробиваючи 131 Мб пам'яті, але це насправді не проблема. Просто напишіть ядра, щоб робити злиті читання для максимальної продуктивності.