Karta graficzna sprzętem tylko dla graczy? Wybaczcie, ale to bzdura
Samodzielna karta graficzna to sprzęt, który lwiej części użytkowników domowych kojarzy się wyłącznie z grami. Osoby, które nie są zdeklarowanymi graczami, a jednocześnie nie zaliczają się do grona użytkowników zaawansowanych, zwykły sądzić, że wydajny akcelerator to fanaberia. Ale czy słusznie? Cóż, bynajmniej.
22.12.2019 | aktual.: 22.12.2019 23:46
Nie zrozumcie mnie źle, nie zamierzam nikomu wmawiać, że potrzebuje dGPU, jeśli w 100 proc. zadowala się modelem zintegrowanym z procesorem. Pragnę natomiast zadać kłam popularnemu twierdzeniu, jakoby karty graficzne w scenariuszu domowym były wykorzystywane wyłącznie przez maniaków gier. Bo to po prostu jawne niedoszacowanie ich potencjału.
Zasadniczo rzecz ujmując, karta graficzna to także procesor. Tyle że inny niż procesor centralny. Zdecydowanie inny. Podczas gdy CPU to przykład urządzenia do sekwencyjnego przetwarzania szeregowego, GPU działa na zasadzie masowo równoległej. Strukturalnie te pierwsze są znacznie bardziej zaawansowane, cechując się chociażby zaawansowanymi mechanizmami przełączania kontekstu, czyli przydzielania zasobów poszczególnym procesom. Grafika tego nie potrafi. Za to świetnie sprawdza się w operacjach na dużych porcjach powtarzalnych danych, dzięki tysiącom jednostek arytmetyczno-logicznych.
Dysponując procesorem centralnym, który kieruje logiką wykonywanych zadań, dobrze jest mieć także wydajną grafikę, która weźmie część arytmetyki na siebie. Przynajmniej w wybranych zastosowaniach, gdzie model przetwarzania wielu strumieni danych w oparciu o pojedynczy strumień rozkazów ma szansę się sprawdzić. I zwłaszcza, że wydajny model nie musi kosztować kroci. Przykład? GeForce’a RTX 2060 marki Palit można kupić w cenie poniżej 1,6 tys. zł.
Mythbusters Demo GPU versus CPU
Akceleracja obliczeń to nie zawsze nauka
Jakie to zastosowania? – zapytacie. Oczywiście najprostszą odpowiedzią jest abstrakcyjny termin zaawansowane obliczenia naukowe. Ktoś jednak słusznie zauważy, że większość użytkowników komputera w poważaniu ma implementacje łańcuchów blokowych czy prace nad zwijaniem białek. Strzelam, większość tych pojęć nie rozumie i nawet nie chce rozumieć. I nie musi.
Co innego, gdy zdolność do niezwykle szybkiego prowadzenia operacji macierzowych przeniesiemy na grunt czysto praktyczny. Przykład pierwszy z brzegu to modelowanie grafiki trójwymiarowej. Rendering sceny w aplikacji Blender przy użyciu karty graficznej może być nawet 50-krotnie szybszy niż na topowym procesorze centralnym. To samo tyczy się choćby konkurencyjnego Autodesk Maya.
Analogicznie, moc obliczeniową karty graficznej potrafią spożytkować narzędzia do edycji wideo, z niezwykle popularnym Adobe Premiere Pro na czele. Wydajna grafika to o kilka rzędów szybszy podgląd efektów i eksport materiału. Ba, zwykła przeglądarka internetowa może działać szybciej, gdy to karta graficzna, a nie procesor odpowiada za akcelerację dekodowania strumienia wideo podczas oglądania treści na YouTubie czy Vimeo.
Using MATLAB and TensorRT on NVIDIA GPUs
Z bardziej wysublimowanych przykładów – wydajność GPU przydaje się w środowiskach symulacji matematycznych, takich jak MATLAB czy Mathematica. Jasne, nie są to rozwiązania dla każdego, ale fakt jest faktem. Z oprogramowania tego, wbrew pozorom, dość często korzystają studenci uczelni politechnicznych—to w ramach ciekawostki. A to dopiero początek.
Unikatowe funkcje tylko dla kart graficznych
Niejako pokłosiem wysokiej wydajności kart graficznych w operacjach wektorowych jest to, że niektóre programy mają funkcje zarezerwowane wyłącznie dla posiadaczy odpowiednich modeli GPU. Znamiennym przykładem jest znany przez wszystkich Photoshop, w którym grafika odpowiada m.in. za efekt farby olejnej, płynną zmianę rozmiaru pędzla czy renderowanie dodatkowych obiektów na fotografii.
Konstrukcje zintegrowane nawet jeśli znajdują się na liście kompatybilności, to są na tyle mało wydajne, że korzystanie z wyżej wymienionych opcji staje się doświadczeniem, delikatnie mówiąc, z gatunku tych niezbyt przyjemnych. Każda operacja dłuży się niemiłosiernie i programowi brakuje pożądanej responsywności.
Nie tylko we wspomnianym Photoshopie, ale także na przykład w narzędziach dla architektów, zwłaszcza tworzących wizualizacje przestrzenne. Wymieniać tu można naprawdę wiele: AutoCAD, Archicad, Revit—to tylko pierwsze z brzegu.
Palit GeForce® RTX 2080 SUPER™ WGRP
Tymczasem stale rozwijający się segment AI i głębokiego uczenia angażuje karty graficzne w coraz większym stopniu. Architektura CUDA, która forsuje zrównoleglanie obliczeń, sukcesywnie znajduje kolejne zastosowania. Jest wykorzystywana do zadań jeszcze do niedawna postrzeganych za niemożliwe, takich jak upscaling zdjęć z zachowaniem ich ostrości. Nawiasem mówiąc, to właśnie karty graficzne służą do nauczania dzisiejszych modeli sztucznej inteligencji.
A może by tak trzy monitory… 4K?
Równocześnie nie należy zapominać, że obecność samodzielnej karty graficznej istotnie rozszerza możliwości platformy dotyczące obsługi urządzeń wyświetlających. Choć współczesne rozwiązania zintegrowane wspierają po parę wyświetlaczy, rzadko kiedy odpowiednią liczbę złączy zapewnia płyta główna. Przeważnie są maksymalnie dwa.
Osobiście znam co najmniej kilka osób, które wcale nie wykonują na komputerze jakichś szczególnie wymagających obliczeniowo czynności, a jednak dla własnego komfortu korzystają z dwóch, a nawet trzech monitorów. Do pracy biurowej.
Jeśli monitory te mają mieć wyższą rozdzielczość niż Full HD, to rodzi się dodatkowo problem z ilością pamięci VRAM. Większość kart zintegrowanych adresuje do 2 GB, w dodatku zapożyczając je z ogólnej puli pamięci operacyjnej. Spróbujcie podłączyć trzy ekrany 1440p lub 4K przy takiej ilości pamięci, a narazicie się na gasnący obraz i cały szereg innych nieprzyjemności. Brzmi jak szaleństwo? Polecam zapytać kolegę Oskara Ziomka, co sądzi na ten temat ;)