Co je CUDA? A co OpenCL a OpenGL? A proč by nás to mělo zajímat? Odpovědi na tyto otázky je těžké určit – počítačový ekvivalent metafyzických nezodpověditelných –, ale pokusíme se o jasné vysvětlení v jednoduchém srozumitelném jazyce, s možná i trochou introspekce.
V životě editora videa nastává chvíle, kdy nevyhnutelně přemítají o základních otázkách:„Je tohle všechno rychlost, kterou mám? Není nic víc?" Stejně jako hledání smyslu života nebo velká sjednocená teorie vás tato jednoduchá myšlenka spustí nekonečnou a nekonečně hlubokou propastí kontemplace a bádání, dokud se nevyhnutelně nedostanete k otázce, na kterou prostě nemůžete získat pravdivou odpověď. a tam se vyhledávání zastaví.
Nyní vám nemůžeme pomoci s žádnou velkou sjednocenou teorií, ale můžeme říci, že informační zeď, na kterou nakonec narazíte při hledání rychlosti zpracování videa, se nakonec sníží na toto:„Co je CUDA, co je OpenCL a proč mě to zajímá?“
"Teď počkej," říkáš. „Nadpis říká Open GL. Musí tam být překlep." Ne, je tu jen spousta lidí, kteří nemají sympatie k pojmenování standardů. Pravdou je, že abyste porozuměli CUDA a Open GL, musíte také vědět o Open CL. Nyní můžete skočit na internet a wiki všechny tyto termíny a číst všechna fóra a navštěvovat stránky, které udržují tyto standardy, ale stále budete odcházet zmatení. V tomto článku se podíváme na záchranu vašeho metafyzického video hlavolamu pomocí co nejjednoduššího jazyka. Zde neuvidíte žádné kruhové řeči o pojmech jako „rozhraní pro programování aplikací“! Takže, stejně jako všechny questy pro odpovědi, začněme logicky... uprostřed.
Co je CUDA?
CUDA, vytvořená výrobcem grafických karet Nvidia, jednoduše řečeno, umožňuje vašim programům používat mozek vaší grafické karty jako sub-CPU. Váš CPU předává určité úkoly kartě s podporou CUDA. Grafická karta se specializuje na co nejrychlejší výpočet věcí, jako je osvětlení, pohyb a interakce. Grafické karty jsou speciálně navrženy tak, aby takové informace zpracovávaly co nejrychleji, dokonce je posílaly několika pruhy najednou – jako kdybyste měli v supermarketu čtyři pruhy na pokladně pro jeden nákupní košík. Výsledky této práce jsou pak předány zpět do CPU, které od té doby přešlo na větší a lepší věci.
Výhody
Pro programátory je integrace poměrně jednoduchá. Protože je založen na softwaru, velká část systému musí být naprogramována do kódu programu, a proto se jeho funkce může lišit nebo být přizpůsobena. Pro uživatele, protože primární funkce CUDA spočívá ve výpočtech, generování dat a manipulaci s obrázky, mohou být vaše doby zpracování, vykreslování a exportu efektů značně zkráceny, zejména při upscalingu nebo downscalingu. Lze také zlepšit analýzu obrazu, stejně jako simulace, jako je dynamika tekutin a prediktivní procesy, jako jsou vzory počasí. CUDA je také skvělá pro světelné zdroje a ray-tracing. To vše znamená, že funkce podobné efektům vykreslování, kódování a převodu videa – a další – budou zpracovány mnohem rychleji.
Nevýhoda
Všimli jste si toho malého vyloučení odpovědnosti v prvním odstavci? Toto funguje pouze pro grafické karty s povoleným CUDA. Protože CUDA je majetkem společnosti Nvidia, potřebujete grafickou kartu vyrobenou touto společností, abyste ji mohli využít. Pokud máte řekněme Mac Pro ve stylu odpadkového koše, není to pro vás možnost, protože se dodávají pouze s grafickými kartami AMD. Jsou zde možnosti třetích stran, ale Apple dodává AMD pouze ve svých balíčcích. Zjistíte také, že méně programů podporuje CUDA než jeho alternativa, takže pojďme mluvit o této další možnosti.
Co je tedy OpenCL?
OpenCL je relativně nový systém a pro naši diskuzi jej lze považovat za alternativu k CUDA. Je to však otevřený standard – to znamená, že kdokoli může používat jeho funkce ve svém hardwaru nebo softwaru, aniž by platil za jakoukoli proprietární technologii nebo licence. Zatímco CUDA používá grafickou kartu jako koprocesor, OpenCL předá informace úplně a použije grafickou kartu spíše jako samostatný univerzální peer procesor. Je to menší filozofický rozdíl, ale nakonec je tu kvantifikovatelný rozdíl. Pro programátora je o něco těžší kódovat. Jako uživatel nejste vázáni na žádného dodavatele a podpora je tak rozšířená, že většina programů její přijetí ani nezmiňuje.
Konečně OpenGL
OpenGL je opravdu začátek příběhu. Nejde o použití grafické karty jako univerzálního procesoru. Místo toho je to prostě o kreslení pixelů nebo vrcholů na obrazovce. Je to systém, který umožňuje vaší grafické kartě vytvářet 2D a 3D displeje pro váš počítač mnohem rychleji, než by to dokázal váš procesor. Stejně jako CUDA a OpenCL jsou vzájemné alternativy, OpenGL je alternativou k systémům jako DirectX ve Windows. Jednoduše, OpenGL vykresluje vše na vaší obrazovce opravdu rychle, OpenCL a CUDA zpracovávají výpočty nutné při interakci vašich videí s vašimi efekty a dalšími médii. OpenGL může umístit vaše video do editačního rozhraní a umožnit jeho přehrávání, ale když na něj hodíte korekci barev, CUDA nebo OpenCL provedou výpočty, aby správně změnily každý pixel videa.
OpenGL lze implementovat na hardwarové úrovni, což znamená, že kodéři nemusejí zahrnout kód do svého programu, stačí jej zavolat. Kromě toho mají dodavatelé hardwaru možnost rozšířit základní funkce pomocí rozšíření, což znamená, že některý hardware může být v určitých úkolech lepší než jiný. To umožňuje velmi specifické přizpůsobení.
Kde uživatel uvidí výhody OpenGL, je provozní výkon softwaru. Náhledy se vykreslují obzvlášť rychle. V mnoha programech se také používá pro zrychlené rozhraní a překryvy, jako jsou časové osy, záběry, okna, mřížky, vodítka, pravítka a ohraničovací rámečky.
OpenGL pro uživatele nakonec není problém, protože OpenCL i CUDA mohou využívat a využívají systém OpenGL. Zde musíte pochopit, že pokud máte jakoukoli grafickou kartu s nejnovější podporou OpenGL, budete vždy pracovat rychleji než na počítači s CPU a integrovanou grafikou.
V kostce
Takže, co to všechno znamená pro vás a vaši pracovní stanici? Co je lepší — CUDA nebo OpenCL? Budeme předpokládat, že jste udělali první krok a zkontrolovali svůj software a že cokoliv použijete, bude podporovat obě možnosti. Pokud máte kartu Nvidia, použijte CUDA. Většinu času se považuje za rychlejší než OpenCL. Všimněte si také, že karty Nvidia podporují OpenCL. Obecná shoda je, že na tom nejsou tak dobře jako karty AMD, ale neustále se přibližují. Má cenu jít ven a koupit si kartu Nvidia jen kvůli podpoře CUDA? To by záleželo na příliš mnoha konkrétních faktorech, abychom je zde pokryli. Budete se muset podívat na své potřeby a provést průzkum. Nejen o tom, jakou práci vaše společnost dělá, ale i o jednotlivém stroji a o jeho pracovní náplni a funkci. A pokud můžete, před investováním otestujte.
Adobe například na svých stránkách uvádí, že až na pár výjimek může vše, co CUDA pro Premiere Pro dělá, dělat i OpenCL. Také uvádí, že nepoužívá ani jeden z nich pro kódování ani dekódování. Lze je však použít pro vykreslování náhledů a finální exporty. Zdá se, že většina těch, kteří „porovnali“ tyto dva, se přiklání k tomu, že CUDA je rychlejší s produkty Adobe. CUDA má tu výhodu, že je soběstačný, což díky lepší optimalizaci může vést k rychlejšímu výkonu.
Osobní zkušenost
Také bych rád učinil vzácný krok a podělil se zde o své osobní zkušenosti. Všimněte si však, že jsem neprovedl žádné konkrétní testování. Mluvím striktně za sebe, tak to berte za to, co stojí za to. Moje zkušenost je, že CUDA, pokud je k dispozici, je skvělá a může opravdu znatelně zvýšit rychlost. Domnívám se však, že při vykreslování, překódování a exportu došlo k několika dalším selháním nebo závadám. V několika vzácných případech mi také došly možnosti a uchýlil jsem se k vypnutí CUDA, což nakonec vedlo k úspěšnému výsledku. Nikdy jsem nemusel dělat opak. Musím to kvalifikovat také tím, že říkám, že můj čas s CUDA byl velmi omezený. Také neklepu na CUDA, protože problém je s největší pravděpodobností ve způsobu, jakým jej dodavatel softwaru využil. Měl jsem tyto problémy s více než jedním programem, takže jsem možná měl starou verzi CUDA. Jen jsem cítil, že je dost důležité zmínit, že byste si na takové věci měli dávat pozor. Nakonec znovu říkám, že nemůžete udělat chybu ani s jednou volbou, a která by měla být použita, by se mělo určovat zcela případ od případu.
Když se tedy vrátíme zpět k záznamům, můžeme nakonec s jistotou říci, že pokud jste skutečně v pozici, kdy je to skutečně vaše grafická karta, a ne celý váš systém, který zpomaluje váš pracovní postup, pak je pravděpodobné, že upgradujete na jakákoli novější karta bude obrovským zlepšením oproti tomu, co aktuálně zažíváte. Bez ohledu na to, jakou cestu si vyberete, pochopení toho, co tyto systémy dělají, vám pomůže určit, kam musíte investovat, aby vaše pracovní stanice byly nejhorší, jaké mohou být. Investice do karty, která podporuje použití GPU k doplnění nebo odlehčení práce od CPU, ohromně zrychlí váš pracovní postup.
Peter Zunitch je oceněný video editor se sídlem v New Yorku.