Oprogramowanie
Artykuł
Mateusz Brzostek, Poniedziałek, 21 stycznia 2013, 09:07

W każdym pececie jest jakiś układ graficzny, lepszy lub gorszy. Do niedawna, jeśli był gorszy, to służył tylko do wyświetlania pulpitu i okien programów. Jeśli był lepszy, to oprócz tego nadawał się do grania. Ale rozwój w branży gier zapoczątkował spore zmiany w tych układach. Z wąsko wyspecjalizowanych mikroprocesorów stały się uniwersalnymi, programowalnymi maszynami obliczeniowymi, i to o gigantycznej mocy. Stało się jasne, że można, wręcz należy zaprząc tę moc nie tylko do rozrywki. W tej chwili na myśl powinny Wam przyjść takie nazwy, jak: OpenCL, CUDA, GPGPU, QuickSync. O co w tym wszystkim chodzi?

Drzemiące megaflopy

Powstała koncepcja GPGPU, czyli General Purpose Graphics Processing Unit. „Jednostka przetwarzania grafiki ogólnego zastosowania” brzmi bez sensu – w końcu służy do grafiki czy do ogólnych zastosowań? Okazuje się, że programowalne jednostki obliczeniowe nowoczesnych GPU mogą służyć i do tego, i do tego. 

W tym miejscu musimy się zastanowić, jak programy korzystają z układów graficznych. Procesor to jasna sprawa: ktoś pisze kod, a system operacyjny dba o jego prawidłowe wykonanie równocześnie z setkami innych fragmentów kodu. Ale karta graficzna nie jest bezpośrednio programowalna, nie jest po prostu dodatkową jednostką wykonawczą procesora. Jej pamięć nie jest częścią przestrzeni adresowej „głównej” pamięci operacyjnej komputera – nie wpisuje się bezpośrednio do niej kodu i instrukcji. Pośredniczy w tym sterownik, udostępniający różne interfejsy programowania, czyli sposoby odwoływania się do karty. Takimi interfejsami są na przykład DirectX i OpenGL. 

Wraz z rozwojem sprzętu, o którym wspomnieliśmy w pierwszym akapicie, następował rozwój wspomnianych interfejsów. Najbardziej znane i najczęściej wykorzystywane to:

  • DirectX – to cały zbiór różnych interfejsów programistycznych, z których karty graficznej dotyczą: DirectDraw, Direct 2D (oba używane do wyświetlania grafiki dwuwymiarowej), Direct3D (wyspecjalizowany w wyświetlaniu grafiki trójwymiarowej, wykorzystywany przez większość gier) i DirectCompute (do wykonywania obliczeń na GPU). DirectX jest ściśle związany z systemem Windows. Od dawna stosuje się go nie tylko w grach: na przykład wiele programów odtwarzających filmy wyświetla obraz z użyciem DirectDraw.
  • OpenGL – główny rywal DirectX, o bardzo podobnej funkcjonalności. Jest otwartym standardem nieprzywiązanym do żadnego systemu operacyjnego. Wykorzystują go niektóre gry, szczególnie te dostępne na Linuksa lub Mac OS X. Oprócz tego jest powszechnie stosowany do wyświetlania grafiki dwu- i trójwymiarowej w profesjonalnych narzędziach, takich jak produkty Adobe i Autodesk.
  • CUDA – interfejs programowania kart graficznych Nvidii służący do wykonywania obliczeń. Jest dostępny w wersjach dla Windows, Linuksa i Mac OS X, ale to standard zamknięty, ograniczony do układów Nvidii. Wykorzystywany głównie w przemyśle i badaniach naukowych, a tam i tak używa się oprogramowania dostosowanego do konkretnych maszyn. 
  • OpenCL – interfejs programowania wyspecjalizowany w obliczeniach, nie tylko wykonywanych z użyciem procesorów graficznych. Pozwala jednakowo potraktować wszystkie urządzenia obliczeniowe w komputerze: procesor, GPU, a nawet różnego rodzaju procesory sygnałowe. 
  • DXVA, XVBA, XVMC, VA-API, OpenVideo Decode, VDPAU, Intel ClearVideo, Intel QuickSync – cała gama interfejsów programistycznych dających dostęp do wbudowanych w układy graficzne wąsko wyspecjalizowanych jednostek kodowania i dekodowania wideo. Karty AMD mają dekoder UVD i koder VCE, Intel ma ClearVideo i QuickSync, Nvidia – PureVideo; są to jednak wyspecjalizowane jednostki wbudowane w krzem. Są one w mniejszym lub większym zakresie programowalne, ale mogą służyć tylko do obróbki wideo – nie można powiedzieć, że są ogólnego zastosowania. 

W tym artykule przyjrzymy się temu przedostatniemu, OpenCL, a szczególnie wykorzystaniu go w programach użytkowych, z którymi domowy użytkownik może się zetknąć na co dzień.

Ocena artykułu:
Ocen: 19
Zaloguj się, by móc oceniać
Branti (2013.01.21, 09:23)
Ocena: 14

0%
Kolejny dobry art! Brawo!
focus (2013.01.21, 09:29)

0%
Kris @ 2013.01.21 09:26  Post: 630379
Dziwi mnie tylko brak pozycji AMD A10 +jakiekolwiek inne GPU niż jego własne.

Zdaje się, że nie po to kupuje się APU, żeby wykorzystywać osobną kartę graficzną, prawda? :)
focus (2013.01.21, 09:40)

0%
Kris @ 2013.01.21 09:35  Post: 630383
focus @ 2013.01.21 09:29  Post: 630381
(...)

Zdaje się, że nie po to kupuje się APU, żeby wykorzystywać osobną kartę graficzną, prawda? :)


Zdaję się, że mimo to pokazaliście wydajność Intelowskich rozwiązań, mimo posiadania zintegrowanego HD4000, czemu więc AMD już nie?

Może dlatego, że Intel praktycznie nie ma odpowiedników bez zintegrowanej grafiki? Zaś w przypadku A10-5800K masz prosty odpowiednik w postaci X4 750K.
ghs (2013.01.21, 09:41)
Ocena: 10

33%
ciężko się nie zgodzić z 3 punktem podsumowania. cała branża leży pompkami do góry i zamiast pracować nad nowymi rozwiązaniami kombinuje jak reużyć kod sprzed dekady.
lament (2013.01.21, 10:01)
Ocena: 0

0%
Czekam na Cuda (i przy okazji Quick Sync), działa lepiej przy wideo. Czemu nie sprawdziliście obsługi przez Adobe Premiere Pro? Jeśli użyjecie tego programu przy Cuda trzeba odblokować część kart w pliku 'cuda_supported_cards.txt' znajdującego się w lokalizacji programu.
Edytowane przez autora (2013.01.21, 10:05)
focus (2013.01.21, 10:13)

0%
Kris @ 2013.01.21 09:53  Post: 630389
focus @ 2013.01.21 09:40  Post: 630386

Może dlatego, że Intel praktycznie nie ma odpowiedników bez zintegrowanej grafiki? Zaś w przypadku A10-5800K masz prosty odpowiednik w postaci X4 750K.


To tym bardziej, nie ma zestawieniu X4 750K wraz z jakimkolwiek zewnętrznym GPU. Patrząc z perspektywy laika - jest to zwyczajnie antyreklama dla konkretnego produktu, przynajmniej ja tak to widzę, bez obrazy autorze. Ja jestem ciekaw, mimo to jakby się A10 sprawił lub wspomniany odpowiednik.

Może raz jeszcze:

Artykuł ten ma na celu zweryfikowanie ile daje OpenCL na podstawie przykładowych konfiguracji. Czyli:

1. Mamy APU od AMD (tam gdzie jest to najbardziej promowane), które zestawiliśmy z konkurencją cenową (Core i3) również ze zintegrowaną grafiką.
2. Oprócz tego sprawdziliśmy czy GeForce czy Radeon (z podobnego przedziału cenowego) sprawują się lepiej w tych zastosowaniach. W tym celu wykorzystaliśmy adekwatny do tych grafik procesor, czyli Core i5. Równie dobrze mógł być oczywiście inny procesor (np. Core i7), ale to i tak nie miałoby wpływu na końcowe wnioski, wydźwięk artykułu czy wygląd.

Dodawanie kolejnych konfiguracji powodowałoby zacieranie ogólnego przekazu, a nic by nie wnosiło.
Hamil_Hamster (2013.01.21, 10:14)
Ocena: -2

0%
Na szczęście CPU rzadko będzie wykorzystywany jako urządzenie OpenCL, bo jeśli obliczenia mają być prowadzone z użyciem procesora, to odpowiednio zoptymalizowany standardowy kod na ogół będzie szybszy

Na 'chłopski rozum' prawda, ale przydałoby się jakieś zweryfikowanie tej tezy w testach.
Zaloguj się, by móc komentować
Artykuły spokrewnione
Facebook
Ostatnio komentowane