Ampere… czyli co nieco o GPU
Karta graficzna (dalej GPU, z ang. Graphical Processing Unit – jednostka przetwarzająca grafikę) to w dzisiejszym świecie moduł komputera służący nie tylko do generowania grafiki. Moc obliczeniowa aktualnych GPU często przewyższa moc obliczeniową procesorów (CPU) i coraz częściej superkomputery bazują nie na procesorach obliczeniowych, a akceleratorach graficznych. Aż trudno uwierzyć, że ledwie trzy dekady temu pojęcie “karta graficzna” miała tak odmienne znaczenie w świadomości użytkowników.
Krótka lekcja historii
Zanim GPU stały się uniwersalnymi modułami służącymi do generowania obrazu w dowolnej formie, za obsługę obrazu 2D i 3D odpowiadały osobne urządzenia. Pierwsze karty wideo, które były dostępne w komputerach osobistych (nie mówimy tutaj o konsolach do gier) obsługiwane były w zasadzie elementem procesora i pozwalały na obsługę wyłącznie prostego interfejsu i do tego w skali szarości. Jeżeli użytkownik chciał wyświetlić więcej, niezbędny był akcelerator. Jednym z najczęściej wybieranym w tamtym czasie (mówimy o latach 90, XX wieku) akceleratorem był model P86C911 wyprodukowanym przez firmę S3, zwany również S3 Carrera – nawiązujący do szybkości legendarnego Porsche 911 Carrera. Dedykowany dla systemu Windows.
W tym czasie NVIDIA jeszcze nie istniała, a AMD daleko było do przejęcia firmy ATI.
Lata mijały, zapotrzebowanie na grafikę rosło. Trzeba pamiętać, że w tamtym czasie, chociaż komputery stawały się już narzędziem pracy, to grafika wykorzystywana była głównie w rozrywce i to ta branża była motorem napędowym układów GPU. Na podium stała wtedy firma 3Dfx z akceleratorem graficznym Voodoo (1996 rok). NVIDIA również już istniała, jednak ich karta multimedialna NV1 nie była w stanie przebić się na rynku, a następcy – akceleratory NV2 i RIVA 128 zostały stłamszone przez modele z serii Voodoo.
Czym jest mikroarchitektura?
Następcą akceleratorów RIVA 128 była RIVA TNT bazująca na mikroarchitekturze Fahrenheit. Pojęcie mikroarchitektury w świecie kart graficznych jest dosyć trudne do wyjaśnienia, bez zagłębiania się w procesy rządzące informatyką. Bardzo ogólnie mówiąc mikroarchitektura to bardziej fizyczne elementy procesora – tranzystory i ich wielkość, bramki logiczne, pamięci i jej kanały itd.
Każda mikroarchitektura (określana nazwą kodową) obsługiwała określone funkcje. Pierwszą mikroarchitekturą firmy NVIDIA był Fahrenheit. Przykładowo, ta architektura pozwalała na obsługę przez akceleratory graficzne bibliotek DirectX w wersji 5.0 i 6.0 oraz posiadała chipy o rozmiarze 90mm.
Kolejna architektura nazwana nazwiskiem innego fizyka – Celsius – przyniosła ze sobą pierwszą kartę graficzną, która odpowiadała za wszystko – od generowania grafiki, nanoszenie tekstur, umieszczanie obiektów w przestrzeni po wyświetlanie obrazu i interfejsu 2D.
Oczywiście nie będziemy tutaj wymieniać wszystkich 14 architektur kart graficznych NVIDII. Założeniem każdej kolejnej było, a jakże, zwiększenie wydajności względem poprzednika.
Ampere vs. Turing vs. Pascal vs. Maxwell vs. Kepler
Od 2010 roku NVIDIA regularnie co dwa lata ogłaszała odświeżoną wersję architektury. Najistotniejsze, w odniesieniu do dzisiejszych możliwości, były te zaprezentowane w roku 2014 (Maxwell), 2016 (Pascal), 2018 (Turing) oraz 2020 (Ampere). Najistotniejszą zmianą był proces technologiczny w każdej kolejnej generacji.
Proces technologiczny
Proces technologiczny wyrażany jest w nanometrach i określa długość bramki w tranzystorze, co przekłada się na ich zagęszczenie na płycie krzemowej. Innymi słowy – im krótsza droga pomiędzy tranzystorami, tym więcej elektronów będzie w stanie pomiędzy nimi się przemieszczać oraz sama liczba bramek zostanie zwiększona. Więcej bramek, krótsza droga, więcej elektronów – więcej operacji wykonywanych na sekundę – większa wydajność jednostki i mniejsze nakłady mocy. Tak w skrócie.
Na przykład karta NVIDIA GeForce RTX 3080 wykonana w procesie 8 nm posiada 28400 milionów tranzystorów, czyli niemal 9 razy więcej, niż GTX 480, pochodzący z roku 2010 i produkowany w wymiarze technologicznym 40 nm. Ten ma ich 3200 milionów. Warto przy tym zaznaczyć, że GeForce GTX 480 pobierał do 250W, gdzie RTX 3080 tylko 350W, czyli około 40%. Bazując na testach, 8–mio krotny wzrost wydajności kosztem niższym niż 50–cio procentowy wzrost poboru prądu.
CUDA i dziwy
Ważnym elementem kart graficznych NVIDII są oczywiście rdzenie CUDA. Jest to specjalistyczna architektura procesorów wielordzeniowych, których zadaniem są obliczenia liczbowe wykonywane w zoptymalizowany sposób, znacznie wydajniejszy niż w standardowych jednostkach obliczeniowych. CUDA znajduje swoje zastosowanie w zasadzie w każdej dziedzinie.
- Nauka – symulacje fizyczne (odwzorowanie zachowywania się gazów, cieczy, ciał stałych)
- Multimedia – Wspieranie kompresji wideo
- Rozrywka – Obliczanie fizyki w grach
- Medycyna – Tworzenie obiektów trójwymiarowych na podstawie zdjęć z tomografii komputerowej
- Fotogrametria
- Sztuczna inteligencja – sieci neuronowe, uczenie maszynowe
Dalszym rozwojem rdzeni CUDA (jest to w końcu technologia z 2010 roku) są rdzenie Ray Tracing, będące sercem architektury Turing i Ampere. Rdzenie śledzenia promieni powstały z myślą o środowiskach wirtualnych – innymi słowy, grach komputerowych. Obliczanie promieni światła w czasie rzeczywistym jest na ten moment jednym z najbardziej wymagających typów obliczeń, z jakim może spotkać się procesor graficzny. Mówimy tutaj o symulowaniu w zasadzie nieskończonej liczby cząsteczek będących jednocześnie falą, które na dodatek oddziałują na otoczenie (np. odbicie w kałuży). Do tego celu wykorzystywane są wspomniane wcześniej rdzenie RT.
Te natomiast znalazły swoje zastosowanie ponownie w sieciach neuronowych. Moc obliczeniowa, którą oferują, w znacznie bardziej efektywny sposób pozwala uczyć się algorytmom i w odniesieniu do rdzeni CUDA nawet kilkukrotnie przyspiesza prace.
Podsumowanie
Niniejszy tekst zawiera wiele uproszczeń, aby ułatwić odbiór. Temat kart graficznych, architektury, rdzeni CUDA, RT, optymalizacji, sterowników itd. jest tak rozległy, że powstają na ich temat prace naukowe. Naszym cele było przedstawienie nowych technologii i wyjaśnienie haseł, które towarzyszyły danym generacjom kart.
Na ten moment najnowszą architekturą dla kart graficznych jest Ampere i w postaci kart graficznych NVIDIA RTX A4000, A5000, A6000, A8000 architektura ta jest dostępna w stacjach roboczych wiodących producentów.
A jeżeli po lekturze nadal nasuwają się pytania skorzystaj z formularza niżej, chętnie pomożemy.