12 kart graficznych w akcji. Testujemy OpenCL, DirectCompute, ATI Stream i NVIDIA CUDA. Sprawdzamy też wydajność PhysX pomiędzy dwoma generacjami kart GeForce oraz sprzętowych teselatorów ATI i NVIDI
Warto przeczytać: |
nVidia CUDA i ATI Stream - wykorzystać moc GPU |
Wojna pomiędzy NVIDIĄ a ATI toczy się na wielu frontach. Jednym z nich jest poletko zastosowań GPGPU, gdzie każdy z potentatów chce zdobyć należną mu pozycję. GPGPU, czyli General Purpose Graphics Processor Unit, jest technologią w której układ graficzny zajmuje się obliczeniami ogólnego przeznaczenia, czyli takimi, które były do tej pory realizowane przez procesor. Jaka z tego korzyść? Taka, że architektura nowoczesnych kart graficznych pozwala przeprowadzać takie obliczenia od kilku do kilkunastu razy szybciej niż przy wykorzystaniu procesorów.
O GPGPU pisaliśmy już na naszych łamach w artykule nVidia CUDA i ATI Stream. Wykorzystać moc GPU. Jeśli do tej pory nie spotkałeś się z ideą zaprzęgnięcia kart graficznych do takiej roli, polecamy lekturę tego tekstu. Zgodnie z tytułem traktował on o dwóch technologiach GPGPU konkurencyjnych firm (NVIDII i ATI). Dzięki technologii CUDA i jej ostrej promocji na pozycję lidera wysunęła się firma NVIDIA. ATI ze swoim rozwiązaniem Stream pozostała nieco w tyle (przynajmniej jeśli chodzi o aplikacje użytkowe), jednak dziś sytuacja uległa zmianie, bo do walki włączył się kolejny zawodnik.
Jest on z założenia daltonistą i nie wybiera strony zielonej (NVIDIA) ani czerwonej (ATI), ponieważ może działać na dowolnej platformie. Mowa oczywiście o OpenCL, otwartym standardzie programowania równoległego dla heterogenicznych (różnorodnych) systemów, który ma oferować takie same (bądź większe) możliwości jak CUDA, Stream czy DirectCompute. Do obliczeń ogólnego przeznaczenia OpenCL może wykorzystać zarówno wielordzeniowe procesory oraz dowolne układy graficzne, i to - z założenia - równocześnie. Standard ten może pogodzić obie technologie odwiecznych rywali, których główną wadą jest to, że mogą działać albo na kartach NVIDII (CUDA), albo na ATI (Stream).
Zarówno NVIDIA jak i ATI już jakiś czas temu udostępniły sterowniki OpenCL w wersji 1.0. W przypadku NVIDII są one zintegrowane ze sterownikami kart graficznych, a w przypadku ATI należy zainstalować dodatkowy pakiet ATI Stream Software Developer Kit (SDK) z obsługą OpenCL.
W tym przypadku NVIDIA znów była o krok przed rywalem. Pierwszy pokaz OpenCL działającego na swoich kartach przeprowadziła już w grudniu 2008 roku i wprowadziła implementację OpenCL w sterownikach przeznaczonych dla użytkownika końcowego już we wrześniu 2009. Firmie ATI/AMD udało się to zrealizować dopiero w grudniu, jednak wersja beta Stream SDK z obsługą OpenCL była dostępna już w październiku.
Implementacja OpenCL w wykonaniu ATI/AMD, mimo że przyszła na świat później, to jednak ma zaletę, której rywal jak na razie nie wprowadził do swoich sterowników. OpenCL jest frameworkiem programowania równoległego zarówno dla układów graficznych, jak i wielordzeniowych procesorów. OpenCL w wykonaniu ATI umożliwia wykorzystanie również procesora jako jednostki OpenCL (liczba rdzeni równa się liczbie jednostek OpenCL). OpenCL NVIDII jak na razie umożliwia wykorzystanie do obliczeń wyłącznie kart graficznych. Znając niechęć „Zielonych” do usprawniania jakiejkolwiek technologii, która byłaby związana z procesorami (vide PhysX CPU), można przypuszczać, że tak już pozostanie.
Swoje trzy grosze do świata technologii GPGPU wtrąciła też firma Microsoft ze swoim rozwiązaniem o nazwie DirectCompute.
DirectCompute umożliwia wykonywanie obliczeń na układzie graficznym i funkcjonuje w środowisku Windows Vista/7. Chociaż technologia pojawiła się wraz z Windows 7 i DirectX 11, to wykorzystuje moc kart graficznych zarówno z obsługą DX 10/10.1 (DirectCompute 4.0/4.1), jak i DX 11 (DirectCompute 5.0).
Intefejs Windows już korzysta z mocy obliczeniowej kart graficznych, a szerszego wykorzystania DirectCompute należy spodziewać się w przyszłych grach wykorzystujących możliwości DirectX 11.
GPU-Z: GeForce GTX 260, 275, 285, 465, 470 i 480
W szranki w testach GPGPU (OpenCL i DirectCompute) stanęły karty Fermi (GTX 480, 470 i 465) oraz Evergreen (rodzina ATI HD 5xxx). Od razu jednak chcielibyśmy zaznaczyć, że dostępne oprogramowanie słabo (lub wcale) radziło sobie z wykorzystaniem dwóch układów graficznych, co w większości testów zdyskwalifikowało Radeona HD 5970.
Efekt uruchomienia jednego z testów OpenCL w GPU Caps Viewer na Radeonie HD 5970
Dodatkowo sprawdziliśmy wydajność kart GeForce najnowszej i poprzedniej generacji w testach CUDA i PhysX, oraz kart Radeon w ATI Stream. Korzystając z okazji nie omieszkaliśmy dokładnie sprawdzić kolejnego aspektu nowych konstrukcji graficznych obu firm - wydajności sprzętowych teselatorów.
Karty NVIDII i ATI cechują się odmienną budową, sposobem działania i różnym podejściem do realizacji tych samych celów. Rozwój technologii CUDA i Stream, pomimo znaczących postępów, wciąż nie przyniósł spodziewanego wysypu oprogramowania, z którego mógłby skorzystać użytkownik końcowy.
GPU-Z: Radeon HD 5670, 5770, 5830, 5850, 5870 i 5970
Implementacje OpenCL dla kart obu producentów są rozwiązaniami świeżymi. Twórcy oprogramowania (choćby Folding@home) natykali się na problemy z obu wersjami i na masowe wykorzystanie tej technologii przyjdzie nam z pewnością jeszcze poczekać. Należy też ostrożnie założyć, że część benchmarków - i sterowników - ma wciąż ograniczoną funkcjonalność. Jeśli porównanie wydajności kart graficznych w grach jest zadaniem stosunkowo prostym, to sytuacja zmienia się diametrialnie w przypadku obliczeń GPGPU. Często nie sposób stwierdzić, która z konstrukcji jest wydajniejsza - wszystko zależy od tego, jak został napisany program i czy potrafi lepiej wykorzystac architekturę kart ATI, czy NVIDII.