Wat is CUDA? Hoe zit het met OpenCL en OpenGL? En waarom zouden we ons zorgen maken? De antwoorden op deze vragen zijn moeilijk vast te stellen - het computerequivalent van de metafysische onbeantwoordbare vragen - maar we zullen proberen een duidelijke uitleg te geven in eenvoudig te begrijpen taal, met misschien ook een beetje introspectie.
Er komt een moment in het leven van een video-editor dat ze onvermijdelijk nadenken over de basisvragen:"Is dit alle snelheid die ik heb? Is er niets meer?” Net als de zoektocht naar de zin van het leven of een grootse verenigde theorie, lanceert deze eenvoudige gedachte je in een eindeloze en oneindig diepe kloof van contemplatie en onderzoek, totdat je onvermijdelijk op een vraag belandt waarop je gewoon geen echt antwoord kunt krijgen, en daar stopt het zoeken.
Nu kunnen we je niet helpen met een grootse uniforme theorie, maar we kunnen wel zeggen dat de informatiemuur die je uiteindelijk zult tegenkomen bij je zoektocht naar videoverwerkingssnelheid uiteindelijk zal neerkomen op dit:"Wat is CUDA, wat is OpenCL, en waarom kan het me iets schelen?”
“Wacht nu”, zeg je. “De kop zegt Open GL. Er moet een typefout zijn”. Nee, er zijn gewoon veel mensen die geen sympathie hebben voor het benoemen van normen. De waarheid is dat om CUDA en Open GL te begrijpen, u ook over Open CL moet weten. Nu zou je op internet kunnen springen en al deze termen kunnen wiki, en alle forums kunnen lezen en de sites kunnen bezoeken die deze normen handhaven, maar je zult nog steeds verward weglopen. In dit artikel komen we tot uw metafysische videoraadselredding met een zo eenvoudig mogelijke taal. U zult hier geen circulaire zien spreken over termen als "applicatie-programmeerinterface"! Laten we dus, zoals bij alle zoektochten naar antwoorden, logisch beginnen... in het midden.
Wat is CUDA?
Gemaakt door grafische kaart maker Nvidia, in zo eenvoudig mogelijke bewoordingen, laat CUDA uw programma's het brein van uw grafische kaart gebruiken als een sub-CPU. Uw CPU geeft bepaalde taken door aan de CUDA-compatibele kaart. De grafische kaart is gespecialiseerd in het zo snel mogelijk berekenen van zaken als belichting, beweging en interactie. Grafische kaarten zijn speciaal ontworpen om dergelijke informatie zo snel mogelijk te verwerken en zelfs door meerdere rijstroken tegelijk te sturen, alsof u vier kassarijen in de supermarkt zou hebben voor één winkelwagentje. De resultaten van dit werk worden vervolgens teruggegeven aan de CPU, die sindsdien grotere en betere dingen heeft gedaan.
De voordelen
Voor programmeurs is het relatief eenvoudig te integreren. Omdat het op software is gebaseerd, moet een groot deel van het systeem worden geprogrammeerd in de code van het programma, en dus kan de functie ervan variëren of worden aangepast. Voor de gebruiker, aangezien de primaire functionaliteit van CUDA ligt in berekening, gegevensgeneratie en beeldmanipulatie, kunnen de verwerkings-, weergave- en exporttijden van effecten aanzienlijk worden verkort, vooral bij op- of afschalen. Beeldanalyse kan ook worden verbeterd, evenals simulaties zoals vloeistofdynamica en voorspellende processen zoals weerpatronen. CUDA is ook geweldig in lichtbronnen en ray-tracing. Dit alles betekent dat functies die vergelijkbaar zijn met rendering-effecten, videocodering en conversie - en meer - veel sneller zullen worden verwerkt.
Het nadeel
Is je die ene kleine disclaimer in de eerste alinea opgevallen? Dit werkt alleen voor "CUDA-enabled" grafische kaarten. Aangezien CUDA eigendom is van Nvidia, hebt u een grafische kaart nodig die door dat bedrijf is vervaardigd om hiervan te profiteren. Als je bijvoorbeeld een Mac Pro in de vorm van een prullenbak hebt, is dit gewoon geen optie voor jou, omdat ze alleen worden geleverd met AMD-grafische kaarten. Er zijn hier opties van derden, maar Apple levert alleen AMD in hun pakketten. Je zult ook merken dat minder programma's CUDA ondersteunen dan het alternatief, dus laten we het hebben over die andere optie.
Nou, wat is OpenCL dan?
OpenCL is een relatief nieuw systeem en voor onze discussie kan het worden beschouwd als een alternatief voor CUDA. Het is echter een open standaard, wat betekent dat iedereen de functionaliteit ervan in zijn hardware of software kan gebruiken zonder te betalen voor propriëtaire technologie of licenties. Terwijl CUDA de grafische kaart gebruikt voor een co-processor, zal OpenCL de informatie volledig doorgeven, waarbij de grafische kaart meer wordt gebruikt als een afzonderlijke peer-processor voor algemeen gebruik. Het is een klein filosofisch onderscheid, maar uiteindelijk is er een meetbaar verschil. Voor de programmeur is het een beetje moeilijker om voor te coderen. Als gebruiker bent u niet gebonden aan één leverancier en de ondersteuning is zo wijdverbreid dat de meeste programma's niet eens melding maken van de acceptatie ervan.
Eindelijk, OpenGL
OpenGL is echt het begin van het verhaal. Het gaat er niet om de grafische kaart te gebruiken als een processor voor algemene doeleinden. In plaats daarvan gaat het gewoon om het tekenen van pixels of hoekpunten op het scherm. Het is het systeem waarmee uw grafische kaart veel sneller 2D- en 3D-schermen voor uw computer kan maken dan uw CPU zou kunnen. Zoals CUDA en OpenCL alternatieven voor elkaar zijn, is OpenGL een alternatief voor systemen zoals DirectX op Windows. Gewoon, OpenGL tekent alles heel snel op je scherm, OpenCL en CUDA verwerken de berekeningen die nodig zijn wanneer je video's interageren met je effecten en andere media. OpenGL kan uw video in de bewerkingsinterface plaatsen en deze laten afspelen, maar wanneer u er kleurcorrectie op gooit, zal CUDA of OpenCL de berekeningen uitvoeren om elke pixel van de video correct te wijzigen.
OpenGL kan op hardwareniveau worden geïmplementeerd, wat betekent dat codeerders de code niet in hun programma hoeven op te nemen, ze moeten er gewoon een beroep op doen. Bovendien hebben hardwareleveranciers de mogelijkheid om de kernfunctionaliteit uit te breiden met extensies, wat betekent dat sommige hardware mogelijk beter is voor bepaalde taken dan andere. Dit maakt zeer specifieke aanpassingen mogelijk.
Waar de gebruiker de voordelen van OpenGL zal zien, zijn de operationele prestaties van de software. Previews worden bijzonder snel weergegeven. In veel programma's wordt het ook gebruikt voor een versnelde interface en overlays, zoals tijdlijnen, beeldmateriaal, vensters, rasters, hulplijnen, linialen en selectiekaders.
Uiteindelijk is OpenGL voor de gebruiker een non-issue, aangezien zowel OpenCL als CUDA het OpenGL-systeem kunnen en zullen gebruiken. Wat je hier moet begrijpen, is dat als je een grafische kaart hebt met de nieuwste OpenGL-ondersteuning, je altijd sneller zult werken dan op een computer met alleen een CPU en geïntegreerde grafische kaart.
In een notendop
Wat betekent dit allemaal voor u en uw werkplek? Wat is beter -CUDA of OpenCL? We gaan ervan uit dat je de eerste stap hebt gedaan en je software hebt gecontroleerd, en dat wat je ook gebruikt, beide opties ondersteunt. Als je een Nvidia-kaart hebt, gebruik dan CUDA. Het wordt vaak als sneller beschouwd dan OpenCL. Merk ook op dat Nvidia-kaarten OpenCL ondersteunen. De algemene consensus is dat ze er niet zo goed in zijn als AMD-kaarten, maar ze komen steeds dichterbij. Is het de moeite waard om uit te gaan en een Nvidia-kaart te kopen alleen voor CUDA-ondersteuning? Dat zou afhangen van te veel specifieke casusfactoren om hier te behandelen. U moet naar uw behoeften kijken en uw onderzoek doen. Niet alleen wat voor soort werk uw bedrijf doet, maar zelfs tot aan de individuele machine en wat de werklast en functie ervan zal zijn. En als je kunt, test dan voordat je investeert.
Adobe stelt bijvoorbeeld op haar website dat op enkele uitzonderingen na, alles wat CUDA doet voor Premiere Pro ook door OpenCL kan worden gedaan. Het stelt ook dat het geen van beide gebruikt voor codering of decodering. Ze kunnen echter worden gebruikt voor het renderen van voorvertoningen en definitieve exports. De meerderheid van degenen die de twee hebben "vergeleken" lijkt erop te leunen dat CUDA sneller is met Adobe-producten. CUDA heeft het voordeel dat het op zichzelf staat, wat door betere optimalisatie kan resulteren in snellere prestaties.
Persoonlijke ervaring
Ik zou ook graag een zeldzame zet willen doen en mijn persoonlijke ervaring hier willen delen. Merk echter op dat ik geen concrete tests heb gedaan. Ik spreek puur voor mezelf, dus neem het voor wat het waard is. Mijn ervaring is dat CUDA, indien beschikbaar, geweldig is en je snelheid echt merkbaar kan verhogen. Ik ben echter van mening dat ik nog een paar crashes of glitches heb gehad bij het renderen, transcoderen en exporteren. Ook had ik in een paar zeldzame gevallen geen opties meer en nam ik mijn toevlucht tot het uitschakelen van CUDA, wat uiteindelijk resulteerde in een succesvol resultaat. Ik heb nog nooit het tegenovergestelde hoeven doen. Ik moet dit kwalificeren door ook te zeggen dat mijn tijd bij CUDA zeer beperkt is geweest. Ik klop ook niet op CUDA, omdat het probleem hoogstwaarschijnlijk de manier is waarop de softwareleverancier het heeft gebruikt. Ik heb deze problemen echter met meer dan één programma ervaren, dus misschien had ik een oude versie van CUDA. Ik vond het gewoon belangrijk genoeg om te vermelden dat je op zulke dingen moet letten. Nogmaals, ik zal uiteindelijk zeggen dat je met geen van beide keuzes fout kunt gaan en welke moet worden gebruikt, moet volledig van geval tot geval worden bepaald.
Dus, teruggaand naar de feiten, wat we uiteindelijk met vertrouwen kunnen zeggen, is dat als je echt in de positie bent waar het echt je grafische kaart is, en niet je hele systeem dat je workflow vertraagt, de kans groot is dat je upgradet naar elke recentere kaart zal een enorme verbetering zijn ten opzichte van wat je momenteel ervaart. Ongeacht welk pad u kiest, als u begrijpt wat deze systemen doen, kunt u bepalen waar u moet investeren om uw werkstations zo slecht mogelijk te maken. Investeren in een kaart die het gebruik van de GPU ondersteunt om werk van de CPU aan te vullen of te ontlasten, zal je workflow enorm versnellen.
Peter Zunitch is een bekroonde video-editor gevestigd in New York.