OpenCL si pomalu razí cestu do GIMPu
Nejprve si povězme, co to GEGL je. Generic Graphics Library je tu s námi od roku 2000 a jde o programátorskou knihovnu určenou pro zpracování obrázků. Primárně je vyvíjena pro GIMP, ač jejímu nasazení jinde, jak se na open-source projekt sluší a patří, samozřejmě nic nebrání. GEGL implementuje velkou řadu grafických operací (kompletní přehled), z nichž je pochopitelně mnoho výpočetně poměrně náročných. A to je místo, kde vedle vícejádrových procesorů mohou svojí silou nastoupit grafické procesory a rozhraní OpenCL. To je místo, na které se v rámci letošního GSoC 2011 zaměřil Victor Oliveira.
Jeho cílem je umožnit psaní GEGL plug-inů v OpenCL, tedy mimo jiné rozšířit GeglBuffer tak, aby automaticky poskytoval potřebné podhoubí jako třeba automatické přesuny dat v pamětech pro CPU a GPU.
Prvotní testy kódu ukazují poměrně slušný potenciál, ač je ještě stále co ladit. Nejvíce na přesunu operací na GPU/OpenCL z časového hlediska zabírají právě přesuny dat mezi hlavní pamětí a pamětí grafické karty, jednoduchý test filtru pro jas/kontrast běžel na GPU od Nvidie 483 milisekund, zatím CPU bez OpenCL jej zvládlo za 526 milisekund. Prokázána je v tuto chvíli tedy použitelnost OpenCL pro GEGL operace, jen bude třeba zapracovat na přesunech dat, což je věc, na kterou žehrá nemálo GPGPU vývojářů a která se s každou generací GPU, stejně jako PCI Epxress sběrnice, zlepšuje.
Aktuálně jsou veškeré hrátky pochopitelně v Linuxu omezeny za uzavřené ovladače od AMD a Nvidie, neboť otevřené zatím OpenCL nezvládají. Jednoho dne ale přijde "konečně pořádný GIMP" (single-window režim již je hotov a objeví se koncem roku ve verzi 2.8), který i díky GEGL přinese podporu pro více než 8bitovou barevnou hloubku a s tím jak nám rostou rozlišení fotoaparátů, přijde doba, kdy náročnost operací v GIMPu možná výrazně vzroste a přesun řady z GEGL věcí na GPU všichni velmi oceníme.