aktualności

Współpraca AMD i Adobe, czyli OpenCL w najnowszym Adobe Premiere Pro

40
6 kwietnia 2013, 18:25 Marek Kowalski

Firma AMD (NYSE: AMD) poinformowała o podjęciu współpracy ze znanym producentem oprogramowania do profesjonalnej obróbki multimediów: Adobe Systems Incorporated. Celem współpracy jest akceleracja sprzętowa podczas edycji wideo realizowana w otwartym standardzie OpenCL. 

Wszystko wskazuje na to, że kolejna wersja popularnego wśród profesjonalistów programu Adobe Premiere Pro będzie w pełni wspierać akcelerację sprzętową z wykorzystaniem OpenCL, dzięki czemu użytkownicy komputerów wyposażonych zarówno w konsumenckie (Radeon) jak i profesjonalne (FirePro) karty graficzne oraz procesory APU firmy AMD odczują wzrost wydajności podczas obróbki materiału wideo za pomocą oprogramowania Adobe.

OpenCL jest już wspierany w oprogramowaniu Adobe Premiere Pro na platformę OS X, dzięki współpracy AMD i Adobe, z dodatkowych funkcji akceleracji sprzętowej będą mogli korzystać również posiadacze komputerów pracujących pod kontrolą systemu Windows.

Zgodnie z informacjami udostępnionymi przez firmę AMD, oprogramowanie Adobe akcelerowane przez OpenCL ma zapewnić nawet 4,3-raza szybszy eksport z formatu źródłowego z naniesionymi efektami do preferowanego formatu końcowego.

Więcej informacji na temat implementacji akceleracji sprzętowej wykorzystującej OpenCL w Adobe Premiere Pro na platformę Windows zostanie udostępnionych w trakcie konferecji NAB. Oprócz tego szczegółowe dane na temat nadchodzących nowych narzędzi audio i wideo firmy Adobe zostaną podane do publicznej wiadomości podczas konferencji Adobe MAX, The Creativity Conference, odbywającej się między 4 a 8 maja w Los Angeles w Kalifornii.

Źródło: AMD
szmarioszZobacz profil
Poziom ostrzeżenia: 0%
szmariosz2013.04.08, 11:31
-1#40
C++ AMP jest dopiero w DX11 czyli od windowsa 7 w górę i tylko w windows.
SzerokiZobacz profil
Poziom ostrzeżenia: 0%
Szeroki2013.04.08, 10:02
fotoryba.chrys @ 2013.04.08 10:00  Post: 648273
Czyli co ? Jest szansa oderwania się od cycka Intela i Maców?
Obrabiam audio/video/foto od czasów Amiga 1200+Blizzard60 i nie zamierzam się mądrzyć , tylko czekam jak może kiedyś mniej będę/dziemy wydawać za sprzęt do roboty.


Też miałem taki sprzęt (TTK reklamy) teraz Sam440 śmiga aż miło :)
fotoryba.chrysZobacz profil
Poziom ostrzeżenia: 0%
fotoryba.chrys2013.04.08, 10:00
Czyli co ? Jest szansa oderwania się od cycka Intela i Maców?
Obrabiam audio/video/foto od czasów Amiga 1200+Blizzard60 i nie zamierzam się mądrzyć , tylko czekam jak może kiedyś mniej będę/dziemy wydawać za sprzęt do roboty.
*Konto usunięte*2013.04.08, 06:39
skoti48 @ 2013.04.07 21:59  Post: 648239
SunTzu @ 2013.04.07 21:16  Post: 648238
Znowu CUDA nie jest tak wydajne. Może na Teslach, GK110, gdzie Hyper-Q jest...
... ale nie mam tutaj nie wiadomo czego. Nie ma też możliwości porównania. Powiedziałbym, że na GF-ach i Quadro jest remis, zwłaszcza przy użyciu kernela AMD.

Nie mówię o Hyper-Q itp tylko o CUDA vs OpenCL nawet na kartach z serii 8k. Na takich kartach CUDA potrafi być szybsza od OpenCL (w zależności od kodu ofc) nawet 5-10x - nie za sprawą, Hyper-Q itp, a za sprawą tego, że kompilacja odbywa się offline - kompilator nie liczy się z czasem kompilacji przez co może dużo lepiej kod zoptymalizować niż kompilator działający w trakcie działania już u klienta na komputerze - to powoduje, że kod w CUDA jest dużo lepiej zoptymalizowany i bywa, że ten sam problem do rozwiązania, tyle samo instrukcji w kernelach 'C-like' po skompilowaniu w CUDA ma wielokrotnie mniej instrukcji do wykonania niż kompilacja OpenCL robiona na szybko, bo nie można sobie pozwolić na wiele minut kompilowania kernela jak to odbywa się kiedy kompilator jest offline - może w przyszłych OpenCL będzie uniwersalny bytecode i będzie można kompilować offline, ale w tej chwili niestety o porównywalnej wydajności zapomnij.

SunTzu @ 2013.04.07 21:16  Post: 648238
Czy C++ AMP jest znowu tak mało wydajny. Nie jest to drastyczna różnica. Nawet gdyby był 2x mniej wydajny wszystko sprowadza się do szybkości zaprezentowania gotowego rozwiązania. Jeżeli C++ AMP go skraca mimo, że spadek wydajność jest 1,5-2x to jest to 'parszywy', ale sukces. Dalej wydajność jest zadowalająca.

Nie chciałbym tego sukcesu mącić, ale z moich i innych w sieci testów wynika, że potrafi być 70x i więcej wolniejszy od OpenCL. Obecnie to obliczenia na CPU są szybsze niż C++AMP na GPU:
http://www.overclock.net/t/1329409/updated...ompute-v0-5-7-2
No to jesteśmy na tej samej stronie :P. Tak oczywiście masz rację. Seria 8k w obliczeniach GPU nie jest tak dobra. Ja za punkt odniesienia biorę co najmniej 560. Z punktu widzenia 8k to nawet CUDA jest wolniejsze od obliczeń CPU. Masz super wydajne silniki RT na CPU, które będą wydajniejsze na CPU -> IB/SB-E niż 8k. Oczywiście kod jaki wypulowa CPU i GPU jest inny więc ciężko to porównać. Jednak w obu przypadkach job done...

Przyjmijmy więc, że wszystko zależy od kodu i C++ AMP może być równie wydajne co OpenCL, albo CPU.

Poza tym koszt zakupu dodatkowego CPU to: mobo +1500zł cpu +2x2700zł... W tej cenie kupisz 7970. C++ AMP na 4x7970 z pewnością będzie wydajniejsze niż na CPU 2x Xeonach
MegabyteZobacz profil
Poziom ostrzeżenia: 0%
Megabyte2013.04.08, 00:05
skoti48 @ 2013.04.07 23:33  Post: 648243

Co do wydajności na papierze implementacji Intela to wszystko wygląda ok, ale na papierze - zobaczymy jak będzie w praktyce skoro na prostych testach jak szybka transformacja Fouriera traci już na oko ponad 20% na GPU... na bardziej skomplikowanych kernelach straci dużo więcej - szybszy być na dobrą sprawę nie ma prawa... bo to OpenCL, a słabszy jak najbardziej, bo kod wygenerowany z C++ może być dużo słabszy.

Megabyte @ 2013.04.07 23:22  Post: 648241

Ponieważ dyskusja dotyczy mojej osoby postanowiłem dołączyć ;) Czy możesz wskazać moją wypowiedź, z której wynikałoby to co piszesz?


Zdawało mi się, że o to Ci chodziło w zacytowanym przez Virtusa fragmencie (przyznaję, nie pamiętam dyskusji dokładnie, a nie miałem czasu czytać całego wątku). Skojarzyłem tylko mniej więcej czas żałoby gamedev za Larrabee i tym co napisałeś... jeśli błędnie to przepraszam.

Nie, chodziło mi o kwestie typu: cache L1/L2 zamiast shared memory, stronicowanie pamięci GPU, obsługa przerwań po stronie GPU itp, wspólna przestrzeń adresowa pomiędzy CPU i GPU

skoti48 @ 2013.04.07 23:33  Post: 648243

Megabyte @ 2013.04.07 23:22  Post: 648241
C++ AMP nie wprowadza tutaj elementów, które miałyby jakoś specjalnie wpływać negatywnie na wydajność tworzonego programu.

A potrzebuje coś więcej poza samym C++ na GPU (zmienianym przez Intela na C-like OpenCL, ale jednak konwersja zapewne będzie kosztować (i co pokazuje Intel nawet na prostych testach kosztuje))?

Intel chciał niskim kosztem dołożyć obsługę C++ AMP dlatego wykorzystuję translacje do OpenCL. Można się domyśleć że bez translacji wydajność byłaby wyższa.
skoti48Zobacz profil
Poziom ostrzeżenia: 0%
skoti482013.04.07, 23:33
Megabyte @ 2013.04.07 23:08  Post: 648240

Zanim odpiszę na wcześniejsze posty i interpretacje moich słów polecam przyjrzeć się jak Intel implementuje C++ AMP u siebie: http://llvm.org/devmtg/2012-11/Sharlet-ShevlinPark.pdf Okazuje się, że dobrze zrobiona implementacja C++ AMP może być równie szybka jak OpenCL. Na końcu masz porównywanie wydajności C++ AMP Intela, OpenCLa i C++ AMPa od MS.

Wiem jak robi to Intel - Microsoft robi to teoretycznie lepiej (w praktyce optymalizacja musi leżeć) - kompiluje offline kod GPU do bytecodu.
W testach C++AMP udawało mi się osiągać wydajność OpenCL, ale to optymistyczne przypadki - przy większych kernelach (bipathtracer) już C++AMP tracił sporo.

Co do wydajności na papierze implementacji Intela to wszystko wygląda ok, ale na papierze - zobaczymy jak będzie w praktyce skoro na prostych testach jak szybka transformacja Fouriera traci już na oko ponad 20% na GPU... na bardziej skomplikowanych kernelach straci dużo więcej - szybszy być na dobrą sprawę nie ma prawa... bo to OpenCL, a słabszy jak najbardziej, bo kod wygenerowany z C++ może być dużo słabszy.

Megabyte @ 2013.04.07 23:22  Post: 648241

Ponieważ dyskusja dotyczy mojej osoby postanowiłem dołączyć ;) Czy możesz wskazać moją wypowiedź, z której wynikałoby to co piszesz?

Zdawało mi się, że o to Ci chodziło w zacytowanym przez Virtusa fragmencie (przyznaję, nie pamiętam dyskusji dokładnie, a nie miałem czasu czytać całego wątku). Skojarzyłem tylko mniej więcej czas żałoby gamedev za Larrabee i tym co napisałeś... jeśli błędnie to przepraszam.

Megabyte @ 2013.04.07 23:22  Post: 648241
C++ AMP nie wprowadza tutaj elementów, które miałyby jakoś specjalnie wpływać negatywnie na wydajność tworzonego programu.

A potrzebuje coś więcej poza samym C++ na GPU (zmienianym przez Intela na C-like OpenCL, ale jednak konwersja zapewne będzie kosztować (i co pokazuje Intel nawet na prostych testach kosztuje))?
MegabyteZobacz profil
Poziom ostrzeżenia: 0%
Megabyte2013.04.07, 23:22
skoti48 @ 2013.04.07 20:40  Post: 648237
Virtus* @ 2013.04.07 18:51  Post: 648234

''Zanim skomentuje poszczególne wypowiedzi wspomnę, że ja patrze z punktu widzenia programistyczno - ekonomicznego. Tzn jeśli mam do wyboru dwa przypadki:
...'

To słowa autora tego bloga jeśli dobrze pamiętam? Ale wracając do tematu to co on by chciał, a to co jest to dwie różne rzeczy. Chciałby Intel Larrabee (MIMD), ale to już przeszłe idylliczne marzenia - teraz na lata w GPGPU dalej rządzić będą SIMD (a kod C++ nie wektoryzuje się łatwo)... w praktyce to co chciałby aby było osiągnie po prostu za pomocą programowania wielowątkowego na CPU (klasterki obliczeniowe ARM czyli wiele rdzeni MIMD wchodzą ostatnio na rynek - czyli coś takiego jak chciał z GPU - wiele małych rdzeni MIMD).

Ponieważ dyskusja dotyczy mojej osoby postanowiłem dołączyć ;) Czy możesz wskazać moją wypowiedź, z której wynikałoby to co piszesz?

C++ AMP w porównaniu do OpenCL zakrywa przede wszystkim inicjalizację różnych zasobów na GPU (alokacje pamięci, transfery danych) natomiast sam kod kernela jest na podobnym poziomie abstrakcji. C++ AMP nie wprowadza tutaj elementów, które miałyby jakoś specjalnie wpływać negatywnie na wydajność tworzonego programu.
MegabyteZobacz profil
Poziom ostrzeżenia: 0%
Megabyte2013.04.07, 23:08
skoti48 @ 2013.04.07 21:59  Post: 648239

SunTzu @ 2013.04.07 21:16  Post: 648238
Czy C++ AMP jest znowu tak mało wydajny. Nie jest to drastyczna różnica. Nawet gdyby był 2x mniej wydajny wszystko sprowadza się do szybkości zaprezentowania gotowego rozwiązania. Jeżeli C++ AMP go skraca mimo, że spadek wydajność jest 1,5-2x to jest to 'parszywy', ale sukces. Dalej wydajność jest zadowalająca.

Nie chciałbym tego sukcesu mącić, ale z moich i innych w sieci testów wynika, że potrafi być 70x i więcej wolniejszy od OpenCL. Obecnie to obliczenia na CPU są szybsze niż C++AMP na GPU:
http://www.overclock.net/t/1329409/updated...ompute-v0-5-7-2
Zanim odpiszę na wcześniejsze posty i interpretacje moich słów polecam przyjrzeć się jak Intel implementuje C++ AMP u siebie: http://llvm.org/devmtg/2012-11/Sharlet-ShevlinPark.pdf Okazuje się, że dobrze zrobiona implementacja C++ AMP może być równie szybka jak OpenCL. Na końcu masz porównywanie wydajności C++ AMP Intela, OpenCLa i C++ AMPa od MS.
skoti48Zobacz profil
Poziom ostrzeżenia: 0%
skoti482013.04.07, 21:59
SunTzu @ 2013.04.07 21:16  Post: 648238
Znowu CUDA nie jest tak wydajne. Może na Teslach, GK110, gdzie Hyper-Q jest...
... ale nie mam tutaj nie wiadomo czego. Nie ma też możliwości porównania. Powiedziałbym, że na GF-ach i Quadro jest remis, zwłaszcza przy użyciu kernela AMD.

Nie mówię o Hyper-Q itp tylko o CUDA vs OpenCL nawet na kartach z serii 8k. Na takich kartach CUDA potrafi być szybsza od OpenCL (w zależności od kodu ofc) nawet 5-10x - nie za sprawą, Hyper-Q itp, a za sprawą tego, że kompilacja odbywa się offline - kompilator nie liczy się z czasem kompilacji przez co może dużo lepiej kod zoptymalizować niż kompilator działający w trakcie działania już u klienta na komputerze - to powoduje, że kod w CUDA jest dużo lepiej zoptymalizowany i bywa, że ten sam problem do rozwiązania, tyle samo instrukcji w kernelach 'C-like' po skompilowaniu w CUDA ma wielokrotnie mniej instrukcji do wykonania niż kompilacja OpenCL robiona na szybko, bo nie można sobie pozwolić na wiele minut kompilowania kernela jak to odbywa się kiedy kompilator jest offline - może w przyszłych OpenCL będzie uniwersalny bytecode i będzie można kompilować offline, ale w tej chwili niestety o porównywalnej wydajności zapomnij.

SunTzu @ 2013.04.07 21:16  Post: 648238
Czy C++ AMP jest znowu tak mało wydajny. Nie jest to drastyczna różnica. Nawet gdyby był 2x mniej wydajny wszystko sprowadza się do szybkości zaprezentowania gotowego rozwiązania. Jeżeli C++ AMP go skraca mimo, że spadek wydajność jest 1,5-2x to jest to 'parszywy', ale sukces. Dalej wydajność jest zadowalająca.

Nie chciałbym tego sukcesu mącić, ale z moich i innych w sieci testów wynika, że potrafi być 70x i więcej wolniejszy od OpenCL. Obecnie to obliczenia na CPU są szybsze niż C++AMP na GPU:
http://www.overclock.net/t/1329409/updated...ompute-v0-5-7-2
*Konto usunięte*2013.04.07, 21:16
Znowu CUDA nie jest tak wydajne. Może na Teslach, GK110, gdzie Hyper-Q jest...
... ale nie mam tutaj nie wiadomo czego. Nie ma też możliwości porównania. Powiedziałbym, że na GF-ach i Quadro jest remis, zwłaszcza przy użyciu kernela AMD.

Czy C++ AMP jest znowu tak mało wydajny. Nie jest to drastyczna różnica. Nawet gdyby był 2x mniej wydajny wszystko sprowadza się do szybkości zaprezentowania gotowego rozwiązania. Jeżeli C++ AMP go skraca mimo, że spadek wydajność jest 1,5-2x to jest to 'parszywy', ale sukces. Dalej wydajność jest zadowalająca.
Funkcja komentowania została wyłączona. Do dyskusji zapraszamy na forum.
1