Karta graficzna zamiast CPU, czyli superkomputer pod twoim biurkiem

Współczesny procesor (CPU) jest całkiem zmyślnym kawałkiem krzemu, ale w niektórych dziedzinach daleko mu do wyspecjalizowanego procesora graficznego (GPU), który niektóre zadania potrafi wykonać o cały rząd wielkości szybciej. Te zadania kręcą się wokół renderowania grafiki trójwymiarowej tak szybko jak się tylko da i z możliwie najwyższą jakością. Za taką wizualizacją kryją się skomplikowane geometryczne obliczenia. Więc dlaczego nie zaprząc tego samego sprzętu i koncepcji programistycznych do wykonywania wszelkiego rodzaju alternatywnych funkcji? Ten pomysł stał się podstawą technologii "General Purpose computation on GPUs", czyli wykonywania ogólnych obliczeń przez procesor graficzny, albo w skrócie GPGPU. Przerzucenie części obowiązków centralnego procesora na barki karty graficznej może być więc całkiem skutecznym sposobem poprawienia wydajności całego komputera.

W gruncie rzeczy wszelkie obliczenia możliwe do podzielenia na powtarzające się algorytmy mogą być przyspieszane przez kartę graficzną. Lista najbardziej prawdopodobnych kandydatów obejmuje obliczenia fizyczne, naukowe modelowanie, prognozy finansowe, rozpoznawanie twarzy i wiele innych zadań wymagających intensywnego przetwarzania danych. Pierwszą, która przypomniała środowisku specjalistów o możliwościach GPGPU była ATI z jej Stream Computing initiative.

Sama nazwa "stream computing" (obliczenia potokowe) nie została przez ATI precyzyjnie zdefiniowana, chodzi o taką klasę problemów, która wyraźnie różni się od obliczeń tradycyjnie uważanych za najsilniejszą stronę CPU. Jednym z pierwszych zastosowań w jej ramach były obliczenia naukowe dotyczące modelowania budowy protein.

Jednakże możliwości GPGPU nie są badane jedynie przez ATI. Procesory graficzne Nvidii mają podobne możliwości. Do eksploatacji nowego terytorium włączył się także Intel w ramach swojej inicjatywy Larrabee.

Intel też próbuje GPGPU chociaż od drugiej strony.

Intel też próbuje GPGPU chociaż od drugiej strony.

Superkomputer za grosik

Ze względu na architekturę procesora GPGPU jest silnie związana z przetwarzaniem potokowym i pewnie stąd ATI wybrało tę nazwę dla swojego narzędzia. Ale przetwarzanie potokowe wcale nie zostało wynalezione przez tą firmę. W istocie rzeczy jego korzenie sięgają czasów sprzed wynalezienia peceta. Jest związane z opanowaniem możliwości przetwarzania całych wektorów i tablic liczb na superkomputerach zbudowanych pod koniec lat sześćdziesiątych poprzedniego wieku. Chodziło o wykonywanie operacji matematycznych na więcej niż jednej danej jednocześnie. To oznaczało, że procesor mógł wykonywać o wiele więcej pracy w czasie jednego cyklu zegara.

Jednym z najsłynniejszych implementacji tego pomysłu jest Cray-1, którego pierwszy egzemplarz z serii został zainstalowany w laboratorium Los Alamos w 1976 roku. Stał się możliwy wielki przyrost wydajności, ale tylko tych zadań, które dają się podzielić na powtarzalne operacje. Ta technologia znalazła sobie drogę także do pecetowych CPU pod postacią stale udoskonalanych i coraz bardziej skomplikowanych serii instrukcji z rodziny Single Instruction Multiple Data (SIMD). Zaczęło się od MMX, potem 3DNow! dzisiaj doszliśmy do kolejnych wersji SSE (Streaming SIMD Extensions). Jak z tego widać procesor centralny także ma własny skromny zasób instrukcji potokowych, które fizycznie stały się częścią jednostki zmiennopozycyjnej (FPU). To już zupełnie inny układ od koprocesora matematycznego 80287 z pionierskich czasów.

Charakterystyczny beczkowaty kształt superkomputera Cray 1 (źródło: Wikipedia, Cray)

Charakterystyczny beczkowaty kształt superkomputera Cray 1 (źródło: Wikipedia, Cray)

Następny krok w rozwijaniu tej idei został wykonany przez Sony. Procesor Cell zastosowany w PlayStation 3 jest kombinacją pojedynczego PowerPC z jednostką obsługującą osiem wektorów. Ale nawet jemu daleko do możliwości kart graficznych, które zostały w dużym stopniu zoptymalizowane do wykonywania powtarzających się operacji przy renderowaniu trójwymiarowym. Ja z tego widać GPGPU nie jest niczym specjalnie nowym, jedynie realizacją technologii superkomputerowej wykonanej na tanim chipie peryferyjnym peceta.


Zobacz również