REC

Wskazówki dotyczące nagrywania, produkcji, edycji wideo i konserwacji sprzętu.

 WTVID >> Wideo >  >> wideo >> Porady wideo

CUDA vs. OpenCL vs. OpenGL

Co to jest CUDA? A co z OpenCL i OpenGL? A dlaczego miałoby nas to obchodzić? Odpowiedzi na te pytania są trudne do ustalenia — komputerowy odpowiednik metafizycznych nieodpowiedzialnych — ale postaramy się wyjaśnić jasne wyjaśnienie prostym do zrozumienia językiem, być może z odrobiną introspekcji.

W życiu montażysty wideo przychodzi taki czas, kiedy nieuchronnie zastanawiają się nad podstawowymi pytaniami:„Czy to moja prędkość? Czy nie ma nic więcej? Podobnie jak poszukiwanie sensu życia lub wielka zunifikowana teoria, ta prosta myśl rzuca cię w nieskończoną i nieskończenie głęboką przepaść kontemplacji i badań, aż nieuchronnie trafisz na pytanie, na które po prostu nie możesz uzyskać prawdziwej odpowiedzi. a tam wyszukiwanie zatrzymuje się.

Teraz nie możemy Ci pomóc z żadną wielką zunifikowaną teorią, ale możemy powiedzieć, że ściana informacyjna, na którą ostatecznie trafisz w poszukiwaniu prędkości przetwarzania wideo, ostatecznie sprowadzi się do tego:„Co to jest CUDA, czym jest OpenCL i dlaczego mnie to obchodzi?”

„Teraz czekaj”, mówisz. „Nagłówek mówi o Open GL. Musi być literówka”. Nie, jest po prostu wiele osób, które nie mają sympatii do standardów nazewnictwa. Prawda jest taka, że ​​aby zrozumieć CUDA i Open GL, musisz również wiedzieć o Open CL. Teraz możesz wskoczyć do Internetu i wiki na wszystkie te terminy, przeczytać wszystkie fora i odwiedzić strony, które utrzymują te standardy, ale nadal będziesz zdezorientowany. W tym artykule przyjdziemy na ratunek metafizycznej zagadki wideo, używając tak prostego języka, jak to tylko możliwe. Nie zobaczysz tutaj żadnego okólnika mówiącego o terminach takich jak „interfejs programowania aplikacji”! Tak więc, jak wszystkie questy na odpowiedzi, logicznie zacznijmy… od środka.

Co to jest CUDA?

Stworzony przez producenta kart graficznych Nvidię, w najprostszych słowach, CUDA pozwala Twoim programom wykorzystywać mózg Twojej karty graficznej jako podprocesor. Twój procesor przekazuje pewne zadania do karty obsługującej CUDA. Karta graficzna specjalizuje się w jak najszybszym obliczaniu takich rzeczy jak oświetlenie, ruch i interakcja. Karty graficzne są specjalnie zaprojektowane do przetwarzania takich informacji tak szybko, jak to możliwe, nawet do wysyłania ich przez wiele pasów jednocześnie – na przykład, gdybyś miał cztery pasy kasowe w supermarkecie na jeden koszyk. Wyniki tej pracy są następnie przekazywane z powrotem do procesora, który od tego czasu przekształcił się w większe i lepsze rzeczy.

Korzyści

Dla programistów integracja jest stosunkowo prosta. Ponieważ jest oparty na oprogramowaniu, znaczna część systemu musi być zaprogramowana w kodzie programu, a zatem jego funkcja może się różnić lub zostać dostosowana. Dla użytkownika, ponieważ główna funkcjonalność CUDA polega na obliczeniach, generowaniu danych i manipulacji obrazem, czasy przetwarzania, renderowania i eksportu efektów mogą zostać znacznie skrócone, zwłaszcza w przypadku skalowania w górę lub w dół. Można również ulepszyć analizę obrazu, a także symulacje, takie jak dynamika płynów i procesy predykcyjne, takie jak wzorce pogodowe. CUDA świetnie sprawdza się również przy źródłach światła i ray tracingu. Wszystko to oznacza, że ​​funkcje podobne do efektów renderowania, kodowania wideo i konwersji — i nie tylko — będą przetwarzane znacznie szybciej.

Wady

Czy zauważyłeś to jedno małe zastrzeżenie w pierwszym akapicie? Działa to tylko w przypadku kart graficznych z obsługą CUDA. Ponieważ CUDA jest własnością Nvidii, potrzebujesz karty graficznej wyprodukowanej przez tę firmę, aby z niej skorzystać. Jeśli masz, powiedzmy, komputer Mac Pro w stylu kosza na śmieci, po prostu nie jest to opcja dla ciebie, ponieważ są one dostarczane tylko z kartami graficznymi AMD. Istnieją tutaj opcje stron trzecich, ale Apple dostarcza AMD tylko w swoich pakietach. Przekonasz się również, że mniej programów obsługuje CUDA niż jego alternatywa, więc porozmawiajmy o tej innej opcji.

W takim razie czym jest OpenCL?

OpenCL jest stosunkowo nowym systemem i w naszej dyskusji można go uznać za alternatywę dla CUDA. Jest to jednak otwarty standard – co oznacza, że ​​każdy może korzystać z jego funkcji na swoim sprzęcie lub oprogramowaniu bez płacenia za jakąkolwiek zastrzeżoną technologię lub licencje. Podczas gdy CUDA używa karty graficznej jako koprocesora, OpenCL całkowicie przekaże informacje, używając karty graficznej bardziej jako oddzielnego procesora równorzędnego ogólnego przeznaczenia. To niewielkie rozróżnienie filozoficzne, ale w końcu jest różnica policzalna. Dla programisty trochę trudniej jest go kodować. Jako użytkownik nie jesteś związany z żadnym dostawcą, a wsparcie jest tak rozpowszechnione, że większość programów nawet nie wspomina o jego przyjęciu.

Na koniec OpenGL

OpenGL to tak naprawdę początek historii. Nie chodzi o używanie karty graficznej jako procesora ogólnego przeznaczenia. Zamiast tego chodzi po prostu o rysowanie pikseli lub wierzchołków na ekranie. Jest to system, który pozwala Twojej karcie graficznej na tworzenie wyświetlaczy 2D i 3D dla Twojego komputera znacznie szybciej niż mógłby to zrobić Twój procesor. Podobnie jak CUDA i OpenCL są alternatywami dla siebie, OpenGL jest alternatywą dla systemów takich jak DirectX w systemie Windows. Po prostu OpenGL rysuje wszystko na ekranie naprawdę szybko, OpenCL i CUDA przetwarzają obliczenia niezbędne, gdy Twoje filmy wchodzą w interakcję z efektami i innymi mediami. OpenGL może umieścić Twoje wideo w interfejsie edycji i sprawić, że będzie ono odtwarzane, ale kiedy wrzucisz do niego korekcję kolorów, CUDA lub OpenCL wykonają obliczenia, aby poprawnie zmienić każdy piksel wideo.

OpenGL można zaimplementować na poziomie sprzętowym, co oznacza, że ​​programiści nie muszą umieszczać kodu w swoim programie, po prostu muszą go wywołać. Ponadto dostawcy sprzętu mają możliwość rozszerzenia podstawowej funkcjonalności za pomocą rozszerzeń, co oznacza, że ​​niektóre urządzenia mogą być lepsze w niektórych zadaniach niż inne. Pozwala to na bardzo szczegółowe dostosowanie.

Tam, gdzie użytkownik dostrzeże korzyści z OpenGL, będzie działać wydajność operacyjna oprogramowania. Podglądy są renderowane wyjątkowo szybko. W wielu programach jest również wykorzystywany do przyspieszonego interfejsu i nakładek, takich jak osie czasu, nagrania, okna, siatki, prowadnice, linijki i ramki ograniczające.

W końcu OpenGL dla użytkownika nie stanowi problemu, ponieważ zarówno OpenCL, jak i CUDA mogą i korzystają z systemu OpenGL. Musisz tutaj zrozumieć, że jeśli masz jakąkolwiek kartę graficzną z najnowszą obsługą OpenGL, zawsze będziesz pracować szybciej niż na komputerze z samym procesorem i zintegrowaną grafiką.

W skrócie

Co to wszystko oznacza dla Ciebie i Twojej stacji roboczej? Co jest lepsze — CUDA czy OpenCL? Założymy, że wykonałeś pierwszy krok i sprawdziłeś swoje oprogramowanie, a wszystko, czego użyjesz, będzie obsługiwać obie opcje. Jeśli masz kartę Nvidia, użyj CUDA. Przez większość czasu jest uważany za szybszy niż OpenCL. Pamiętaj też, że karty Nvidii obsługują OpenCL. Ogólny konsensus jest taki, że nie są w tym tak dobrzy jak karty AMD, ale cały czas się zbliżają. Czy warto wychodzić i kupować kartę Nvidia tylko dla obsługi CUDA? Zależałoby to od zbyt wielu konkretnych czynników sprawy, abyśmy mogli tutaj omówić. Musisz przyjrzeć się swoim potrzebom i przeprowadzić badania. Nie chodzi tylko o to, jaką pracę wykonuje Twoja firma, ale nawet o pojedynczą maszynę oraz jej obciążenie pracą i funkcje. A jeśli możesz, przetestuj, zanim zainwestujesz.

Adobe, na przykład, stwierdza na swojej stronie internetowej, że z nielicznymi wyjątkami, wszystko, co CUDA robi dla Premiere Pro, może być również wykonane przez OpenCL. Stwierdza również, że nie używa żadnego z nich do kodowania ani dekodowania. Można ich jednak używać do renderowania podglądów i końcowego eksportu. Większość z tych, którzy „porównali” te dwa, wydaje się skłaniać ku szybszemu CUDA z produktami Adobe. CUDA ma tę zaletę, że jest samowystarczalny, co dzięki lepszej optymalizacji może skutkować wyższą wydajnością.

Osobiste doświadczenie

Chciałbym też zrobić rzadki ruch i podzielić się tutaj moim osobistym doświadczeniem. Zauważ jednak, że nie przeprowadziłem żadnych konkretnych testów. Mówię ściśle za siebie, więc weź to za to, co jest warte. Z mojego doświadczenia wynika, że ​​CUDA, gdy jest dostępna, jest świetna i może naprawdę znacznie zwiększyć prędkość. Jednak wierzę, że miałem jeszcze kilka awarii lub usterek podczas renderowania, transkodowania i eksportowania. Ponadto w kilku rzadkich przypadkach zabrakło mi opcji i uciekłem się do wyłączenia CUDA, co w końcu zaowocowało pomyślnym wynikiem. Nigdy nie musiałem robić czegoś przeciwnego. Muszę to określić, mówiąc również, że mój czas w CUDA był bardzo ograniczony. Nie pukam też do CUDA, ponieważ problemem jest najprawdopodobniej sposób, w jaki wykorzystał go dostawca oprogramowania. Doświadczyłem tych problemów z więcej niż jednym programem, więc być może miałem starą wersję CUDA. Po prostu uważałem, że to wystarczająco ważne, aby wspomnieć, że powinieneś uważać na takie rzeczy. Ponownie, ostatecznie powiem, że nie możesz się pomylić z żadnym wyborem i który powinien być używany, powinien być ustalany całkowicie indywidualnie dla każdego przypadku.

Tak więc, wracając do rekordu, możemy ostatecznie powiedzieć z pewnością, że jeśli faktycznie jesteś w sytuacji, w której to naprawdę twoja karta graficzna, a nie cały system spowalnia twój przepływ pracy, to są szanse, że uaktualnisz do każda nowsza karta będzie ogromną poprawą w stosunku do tego, czego obecnie doświadczasz. Bez względu na wybraną ścieżkę, zrozumienie działania tych systemów pomoże Ci określić, w co należy zainwestować, aby Twoje stacje robocze były możliwie najgorsze. Inwestowanie w kartę, która obsługuje użycie GPU w celu uzupełnienia lub odciążenia pracy procesora, znacznie przyspieszy przepływ pracy.

Peter Zunitch to wielokrotnie nagradzany edytor wideo z Nowego Jorku.


  1. Tekstowa grafika wideo:kompletny przewodnik

  2. Inspiracje i trendy w projektowaniu grafiki ruchomej:co musisz wiedzieć

  3. Mniej znaczy więcej – edycja tytułów i grafiki

  4. Recenzja karty graficznej NVIDIA Quadro 4000 i technologii 3D Vision

  5. Opanowanie szablonów ruchomych grafik w programie Premiere Pro

Porady wideo
  1. 5 wskazówek dotyczących ulepszania grafiki pomocniczej

  2. Podstawy tytułów i grafiki

  3. Darmowe elementy projektowe dla artystów zajmujących się grafiką ruchową

  4. Z ostatniej chwili:Blackmagic ogłasza eGPU Blackmagic

  5. 13 DARMOWYCH teksturowanych ruchomych grafik dla Premiere Pro

  6. Najlepsze wtyczki do ruchomej grafiki dla AE

  7. Jak tworzyć ruchome grafiki w After Effects