/ / Zmenšiť 1024 obrázkov na jeden - otvorený

Zmenšiť 1024 obrázkov na jeden - opencl

Čítal som článok o redukcii 1d poľa na jednu hodnotu v openCL ( http://developer.amd.com/resources/documentation-articles/articles-whitepapers/opencl-optimization-case-study-simple-reductions/ ) a porozumel som pojmu asociatívnych operátorov. Malo by byť tiež možné rozšíriť túto koncepciu na pole ONE 2d.

Ale môj problém je trochu iný: Mám ~ 1 000 obrázkov s rozmermi 256 x 256 pixelov, z ktorých každý má 16 bitov, a rád by som zhrnul všetky tieto obrázky, aby som konečne získal ich priemerný priemer. Obvyklý GPU by mal mať dostatok pamäte (~ 130 MB) na vykonanie tejto úlohy, ale ja naozaj neviem, ako implementovať jadro.

odpovede:

1 pre odpoveď č. 1

Rovnako ako sa problém 1D rozširuje na 2D, môže sa rozšíriť aj na 3D (čo máte: 1 000 x 256 x 256).

Presne by sa uplatňovali rovnaké zásady: 1. Pokúste sa robiť toľko práce paralelne, ako môžete, bez sporu s inými pracovnými skupinami. 2. Vykonajte redukciu v etapách tak, aby každá z nich mohla byť paralelná.

Vaša pravdepodobnosť, že bude obmedzená šírka pásma, preplieta sa 131 MB pamäte, ale to nie je v skutočnosti problém. Stačí napísať jadrá, aby vykonávali zlúčené čítania pre maximálny výkon.