GPGPU

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.

Karta GPGPU Tesla firmy Nvidia

Historia[edytuj | edytuj kod]

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[edytuj | edytuj kod]

 Osobny artykuł: OpenCL.

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]:

  • Compute Shader 4.0 dla kart zgodnych z DirectX 10
  • Compute Shader 4.1 dla kart zgodnych z DirectX 10.1
  • Compute Shader 5.0 dla kart zgodnych z DirectX 11

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.

  • "NVIDIA Parallel DataCache" – przyspieszanie wykonywania programów z algorytmami do rozwiązywania problemów fizycznych, raytracingu i mnożeniu macierzy rzadkich[19]
  • pamięć z funkcją ECC ("Error Correction Code") – wykrywanie i korekcja błędów
  • pełna obsługa języka programowania ogólnego przeznaczenia C++
  • pełna obsługa DirectX 11

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].

[23]Zastosowanie[edytuj | edytuj kod]

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].

Superkomputery[edytuj | edytuj kod]

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].

Miejsce Nazwa Kraj Wydajność
(Linpack)[30]
Liczba GPU Zużycie energii
1 Tianhe-1A Chiny 2,507 PFLOPS 7168 4,04 MW
3 Nebulae Chiny 1,271 PFLOPS 4640 2,55 MW
4 Tsubame 2.0 Japonia 1,192 PFLOPS 4200 1,34 MW

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].

Zastosowanie w domowych komputerach[edytuj | edytuj kod]

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]:

  • "Nvidia CUDA Badaboom", "ATI AVIVO Video Converter" – konwersja materiałów wideo,
  • "vReveal", AVIVO – poprawa odtwarzanego wideo w czasie rzeczywistym,
  • Adobe Photoshop – przyspieszanie operacji na dużych bitmapach, zmiana rozmiaru i obrotu pola roboczego,
  • Adobe Premiere – przyspieszenie operacji na plikach wideo,
  • AutoCAD – podwyższenie wydajności w aplikacjach CAD.

Przypisy[edytuj | edytuj kod]

  1. Marco Fratarcangeli: General-purpose computing on graphics processing units (GPGPU). Sapienza University of Rome. [dostęp 2012-10-31]. [zarchiwizowane z tego adresu (2013-02-05)]. (ang.).
  2. a b Obliczenia na GPU (GPU Computing) [online], Nvidia.pl [dostęp 2010-12-31] [zarchiwizowane z adresu 2011-02-27].
  3. Marek Czapelski: Karta graficzna zamiast CPU, czyli superkomputer pod twoim biurkiem. Pcworld.pl, 2008-01-03. s. 4. [dostęp 2010-12-31].
  4. The Cg Tutorial – Chapter 10. Profiles and Performance [online], NVIDIA Corporation, 2003 [dostęp 2010-12-31] (ang.).
  5. Ashu Rege, Shader Model 3.0 – NVIDIA Developer Technology Group [online], NVIDIA Corporation, 2004, s. 41 [dostęp 2010-12-31] [zarchiwizowane z adresu 2019-12-14] (ang.).
  6. Dawid Długosz: DirectX 10. Centrumxp.pl, 2007-04-10. s. 2. [dostęp 2010-12-31].
  7. NVIDIA Unveils CUDA™ - The GPU Computing Revolution Begins. 2006-10-08. [dostęp 2017-01-16]. (ang.).
  8. NVIDIA completes Acquisition of AGEIA Technologies. 2008-02-13. [dostęp 2010-12-31]. (ang.).
  9. a b Paweł Brągoszewski: Karty pełne mocy. Pcworld.pl, 2007-06. s. 2. [dostęp 2011-01-01].
  10. Mieszko Krzykowski, Alain Ticquet: The future is... CUDA? – Wywiad z firmą NVIDIA na temat CUDA. Pclab.pl, 2009-06-13. s. 3. [dostęp 2010-12-31].
  11. AMD "Close to Metal" Technology Unleashes the Power of Stream Computing. Amd.com, 2006-11-14. [dostęp 2010-12-31]. (ang.).
  12. ATI Stream Technology. Amd.com. [dostęp 2010-12-31]. (ang.).
  13. ATI Stream Software Development Kit (SDK). Amd.com. [dostęp 2010-12-31]. [zarchiwizowane z tego adresu (2009-11-01)]. (ang.).
  14. Khronos OpenCL API Registry. Khronos Group. [dostęp 2010-12-31]. (ang.).
  15. Mariusz Błoński: Larrabee odżyje na rynku HPC. [w:] KopalniaWiedzy.pl [on-line]. 2010-05-26. [dostęp 2010-12-31].
  16. Darren Murph: Windows 7 goes on sale October 22nd. engadget.com, 2009-06-02. [dostęp 2010-12-31]. (ang.).
  17. Georg Wieselberger: DirectX 11: GPU zamiast CPU, na pewno nie dla użytkowników XP. Pcworld.pl, 2009-08-17. s. 2. [dostęp 2010-12-31].
  18. GoldWolf: Testy kart graficznych z rodziny nVidia Fermi – GTX 480, GTX 470, GTX 460 i GTS 450. OCLab.pl, 2010-11-25. [dostęp 2011-01-03].
  19. Procesor obliczeń GPU Tesla C2050 / C2070. Nvidia.pl. [dostęp 2011-01-03].
  20. Marcin Chmielewski: Nvidia Fermi, czyli nowa jakość wśród kart graficznych. Chip.pl, 2009-10-01. [dostęp 2011-01-03].
  21. Damian Jaroszewski: Pokaz możliwości ATI i DirectX 11!. Pcblog.pl, 2009-06-04. [dostęp 2011-01-03]. [zarchiwizowane z tego adresu (2010-08-29)].
  22. Szymon Grzegorczyk: Radeon HD 5870 i Radeon HD 5850 – Czyli o tym jak dobić konkurencję. Pcfoster.pl, 2009-11-10. s. 17. [dostęp 2011-01-03].
  23. J S Rosen, THE ZEROS OF BESSEL FUNCTIONS AND x Jy + 1 (%)/Jy (x) = CONSTANT, 13 września 1955, DOI10.2172/4360349 [dostęp 2021-06-04].
  24. a b Marcin Bieńkowski: Technologia: Obliczenia prowadzone za pomocą kart graficznych. Frazpc.pl, 2009-05-15. [dostęp 2010-12-31]. [zarchiwizowane z tego adresu (2011-01-22)].
  25. Marcin Bieńkowski: Nie tylko do grafiki. Magazynprzemyslowy.pl, 2010-04-08. [dostęp 2010-12-31].
  26. TOP500 Statistics. top500.org. [dostęp 2012-11-13]. (ang.).
  27. Oak Ridge Claims No. 1 Position on Latest TOP500 List with Titan. TOP500, 2012-11-12. [dostęp 2012-11-13]. [zarchiwizowane z tego adresu (2013-01-21)]. (ang.).
  28. TOP500 List - November 2010. Top500.org. [dostęp 2012-06-25]. (ang.).
  29. Igor Stanek, Ewa Rudkowska: Trzy z pięciu najszybszych superkomputerów świata oparte na procesorach NVIDIA Tesla. Nvidia.pl, 2010-11-15. [dostęp 2010-12-31]. [zarchiwizowane z tego adresu (2014-05-12)].
  30. Maksymalna wydajność osiągnięta w teście LINPACK (w PFLOPS-ach),
  31. Powiedział Jack Collins, szef działu obliczeń naukowych i rozwoju oprogramowania w Advanced Biomedical Computing Center
  32. Marcin Sieradzki: Tesla – superkomputer od nVidii z procesorem Tesla C1060. Benchmark.pl, 2008-11-18. [dostęp 2010-12-31].
  33. Katarzyna Kapłon, Ewa Rudkowska: Pierwszy heterogeniczny klaster wykorzystujący GPU Tesla na liście top 500. Nvidia.pl, 2008-11-17. [dostęp 2010-12-31]. [zarchiwizowane z tego adresu (2016-03-04)].
  34. Instytut Maksa Plancka. Nvidia.pl. [dostęp 2010-12-31].
  35. Andrzej Michalski: NVIDIA i Microsoft łączą siły w dziedzinie obliczeń na GPU o wysokiej wydajności. Benchmark.pl, 2009-09-29. [dostęp 2010-12-31].
  36. Karta graficzna do wszystkiego. Pcarena.pl, 2007-02-14. s. 4. [dostęp 2010-12-31].
  37. R4v: Zobaczyć dźwięk. Twojepc.pl, 2004-09-06. [dostęp 2010-12-31].
  38. Łukasz Bigo: Karta dźwiękowa firmy... ATI?. Pcworld.pl, 2006-05-28. [dostęp 2010-12-31].
  39. Robert Ścisłowski, Michał Młynarczyk: Nvidia CUDA – w praktyce. Gazeta.pl, 2009-05-14. [dostęp 2010-12-31]. [zarchiwizowane z tego adresu (2011-10-17)].

Bibliografia[edytuj | edytuj kod]