Remove ads
Z Wikipedii, wolnej encyklopedii
GPGPU (ang. general-purpose computing on graphics processing units[1] lub general-purpose computation on graphics processing units – obliczenia ogólnego przeznaczenia na układach GPU[2], zwany także GPGP, rzadziej GP2) – technika, dzięki której GPU, zwykle zajmujący się tylko obliczeniami związanymi z grafiką komputerową, umożliwia wykonywanie obliczeń ogólnego przeznaczenia, tak jak CPU. Dzięki temu wiele obliczeń, głównie obliczenia równoległe, można przeprowadzić znacznie szybciej.
Początki GPGPU sięgają sposobu przetwarzania całych wektorów i tablic liczb. Jest to związane z przetwarzaniem potokowym i obliczeniami równoległymi. Jedne z pierwszych i najbardziej znanych superkomputerów, które osiągnęły wysoki wzrost wydajności dla zadań podzielonych na powtarzalne operacje, to Cray-1[3].
Pierwsze układy graficzne były oparte na potokach przetwarzania graficznego. Z czasem stawały się one coraz bardziej programowalne. W 1999 firma Nvidia wprowadziła pierwszy GPU. Na tych układach zaczęto wykonywać obliczenia ogólnego przeznaczenia[2].
W 2001 wraz z powstaniem Pixel Shader i Vertex Shader zaimplementowanych w DirectX 8.0 zaczęto częściej wykorzystywać procesor graficzny do obliczeń niezwiązanych z grafiką. Programowalne jednostki cieniujące były wtedy jeszcze bardzo ograniczone (limit dla Vertex Shader 1.1 128 instrukcji; dla Pixel Shader 1.1-1.3 to 4 instrukcje na teksturach i 8 instrukcji arytmetycznych[4]). Z czasem jednak posiadały coraz większe możliwości.
W 2004 powstał Shader Model 3.0, zaimplementowany w DirectX 9.0c, dający możliwość sterowania programem i zwiększony limit instrukcji do 512[5].
W 2006 powstał Shader Model 4.0 zaimplementowany w DirectX 10. Jednostki cieniowania pikseli (Pixel Shader) i wierzchołków (Vertex Shader) zastąpiono zunifikowanymi jednostkami cieniowania (zwanymi również procesorami strumieniowymi). Dzięki temu wzrosła wydajność, mogły być wykonywane obliczenia nie tylko typowe dla programów cieniujących oraz limit instrukcji wzrósł do 64 000[6].
8 listopada 2006[7] firma Nvidia opracowała technologię CUDA, współpracującą ze wszystkimi kartami graficznymi tego producenta począwszy od serii GeForce 8 w tym Quadro oraz Tesla (układy przeznaczone do pracy w technologii GPGPU). Umożliwiła ona wykorzystanie mocy obliczeniowej procesorów kart graficznych do rozwiązywania ogólnych problemów numerycznych w sposób wydajniejszy niż w tradycyjnych procesorach ogólnego zastosowania.
13 lutego 2008 twórca silnika fizyki PhysX, Ageia została przejęta przez Nvidię, która zaimplementowała ją w swojej technologii[8].
Podobnym do PhysX silnikiem fizyki jest Havok. Poprzez rozwijanie przez firmę Havok (stworzoną przez Intela), powstała wersja Havoc FX, która wykorzystuje GPU do symulacji fizycznych[9].
Alain Ticquet (przedstawiciel Nvidia odpowiedzialny za program "GPU Venture" i wspieranie twórców oprogramowania zgodnego z CUDA) w wywiadzie[10] przedstawia możliwości wykorzystania tej technologii. Efekty fizyczne w grach komputerowych mogą być szybciej obliczane, odciążając główny procesor. Możliwe jest wykonywanie wydajnych obliczeń w zakresie symulacji komputerowych z dziedziny fizyki czy chemii, liczeniu aproksymacji, konwersji filmów i tomografii.
Podobną technologię zaczęła tworzyć ATI. W 2006 powstała Close to Metal, wersja beta interfejsu programowania na niskim poziomie umożliwiającego wykorzystanie GPGPU[11]. Teraz znany jest on pod nazwą ATI Stream[12]. Udostępniony został Stream SDK (ATI Stream Software Development Kit)[13]. Zawiera "Brook+", zoptymalizowaną pod kątem obliczeń potokowych wersję BrookGPU, która jest wariantem ANSI C stworzonym na Uniwersytecie Stanforda.
OpenCL to otwarty framework składający się z języka do tworzenia jąder oraz API, pozwalający kontrolować urządzenia, opracowany został przez Apple Inc, a zarządzany i rozwijany przez Khronos Group[14]. Specyfikacja OpenCL 1.0 powstała 6 października 2009. Jest to otwarty standard, z którego może korzystać zarówno CUDA od Nvidii, jak i ATI Stream oraz technologie innych firm.
W 2010 miał zostać wydany procesor Larrabee rozwijany przez firmę Intel. Ale plany te zostały odwołane z powodu opóźnień i rozczarowań zbyt małą wydajnością. Zostanie wydany jako platforma do badań i rozwoju w grafice komputerowej oraz High-performance computing[15].
22 października 2009, wraz z premierą systemu operacyjnego Windows 7, został udostępniony DirectX 11, który był w nim zawarty[16]. Został w nim wprowadzony DirectCompute (Compute Shader czyli jednostki obliczeniowe ogólnego zastosowania). Do jego wykorzystywania (z pewnymi ograniczeniami) wystarczy karta zgodna z DirectX 10. Zaimplementowane w sterowniku DirectX 11 wersje Compute Shader w stosunku do zgodności karty z DirectX[17]:
26 marca 2010 nastąpiła premiera układu GF100 o nazwie kodowej "Fermi"[18]. Jest to nowa architektura CUDA, która zawiera nowe technologie wspomagające GPGPU m.in.
Architektura ta będzie wykorzystywana nie tylko w procesorach graficznych z serii GeForce, ale także Tesla i Quadro[20].
Wcześniej jednak, na targach "Computex 2009", odbyła się premiera konkurencyjnej firmy ATI, układy oparte na chipie RV870 (kodowa nazwa Cypress lub nowsza Evergreen)[21]. Podobnie jak Fermi oferują wsparcie technologii wspomagającej GPGPU m.in. DirectX 11[22].
W listopadzie 2004 zespół naukowców w laboratorium w Los Alamos, wspólnie z Nvidią, opracował program wykonujący obliczenia symulacji zapadającej się gwiazdy supernowej. Obliczenia te zrealizowała karta graficzna NVIDIA Quadro FX 3400[24] czterokrotnie szybciej niż Intel Pentium 4 Xeon 3.0 GHz[25].
Projekt internetowy Folding@home realizujący obliczenia rozproszone, mający na celu badanie procesów zwijania białek, oprócz użycia domowych procesorów i procesorów Cell z konsoli PlayStation 3, umożliwia wykorzystanie GPU. Poprzez zwiększenie szybkości wykonywania obliczeń dzięki GPGPU, opracowywanie nowych sposobów liczenia może być szybsze[9].
Od 2010 roku procesory GPGPU są coraz częściej stosowane w superkomputerach. W listopadzie 2012 układy NVIDIA były stosowane w 62 superkomputerach z listy TOP500, dostarczając w nich sumarycznie ponad 37 PFLOPS mocy obliczeniowej[26]. Na pierwszym miejscu listy w listopadzie 2012 znalazł się superkomputer Titan wykorzystujący układy Nvidia Tesla K20X[27].
W rankingu TOP500 z listopada 2010[28] trzy spośród pierwszych pięciu najszybszych superkomputerów były oparte na Nvidia Tesla[29].
Superkomputery zbudowane w oparciu o GPU w swoich badaniach wykorzystują m.in. Massachusetts Institute of Technology, Uniwersytet Illinois w Urbana-Champaign, Uniwersytet Cambridge czy Advanced Biomedical Computing Center w Frederick, któremu pozwala "przyspieszyć badania nad potencjalnie ratującymi życie lekarstwami przeciw nowotworom"[31][32].
Tokijski Instytut Technologiczny wzmocnił swój superkomputer TSUBAME podłączając 170 systemów Tesla S1070 1U[33].
Instytut Molekularnej Biologii Komórki i Genetyki Maxa Plancka korzysta z superkomputera zbudowanego z 200 procesorów Nvidia Tesla z użyciem technologii CUDA. Wykorzystując ten superkomputer przyspieszone zostało opracowywanie obrazów z kriogenicznego mikroskopu elektronowego 3D[34].
Firmy Nvidia i Microsoft podjęły współpracę w dziedzinie GPGPU. Promują użycie Nvidia Tesla z zastosowaniem systemu operacyjnego dla superkomputerów Windows HPC Server 2008. Dział Nvidii "Research" stworzył programy dla tego systemu np. do raytracingu[35].
W grach komputerowych obliczenia związane z fizyką (symulacja zachowania cieczy, wybuchy i inne efekty cząsteczkowe), teselacją (dostępny jest "Heaven Benchmark") czy sztuczną inteligencją mogą zostać przerzucone z CPU na GPU. Dzięki temu wzrośnie wydajność, a producenci będą mogli dodać nowe efekty.
Wykorzystując GPGPU zostają przyspieszone obliczenia matematyczne lub związane z kryptografią za pomocą algorytmu SHA-1. Dostępny jest benchmark "OpenCL GPCB" wykonujący te testy.
W 2004 firma BionicFX zaproponowała[36], a w 2005 rozpoczęła prace[24], nad technologią "Audio Video Exchange" (AVEX). Ma ona umożliwiać zamianę dźwięku na tekstury, struktury i kolory, aby przesłać je do karty graficznej. Dzięki obliczaniu przez shadery wynikowy sygnał audio będzie otrzymywany znacznie szybciej. Pierwszym programem tego typu miał być "BionicReverb" umożliwiający tworzenie efektów odbicia, symulując pomieszczenia[37].
Podobny pomysł miała firma ATI. W 2006 zaprezentowała układ Radeon X1300 działający w roli prostego equalizera[38].
Wiele aplikacji korzysta z GPGPU, np.[39]:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.