Karty graficzne

GPU w obliczeniach HPC

Popularność architektury CUDA (skrót pochodzi od ang. słów Compute Unified Device Architecture co można przetłumaczyć jako zunifikowana architektura jednostek obliczeniowych), w zastosowaniach inżyniersko-naukowych wynika przede wszystkim z ceny i możliwości. Za stosunkowo niewielkie pieniądze, które są akceptowalne z punktu widzenia uczelnianych budżetów, na biurku można postawić komputer wyposażony z akcelerator graficzno-obliczeniowy o mocy superkomputera sprzed kilku lat. Do tego dochodzi bardzo dobrze udokumentowane środowisko programistyczne, wspierane przez wiele aplikacji wykorzystywanych przez inżynierów i naukowców.

Jak już wspomniałem, wysokowydajne obliczenia HPC (High Performance Computing), z wykorzystaniem możliwości równoległego przetwarzania danych w kartach graficznych nie są niczym nowym. Karty graficzne od dawna charakteryzowały się bardzo wysoką mocą obliczeniową przy równoległym przetwarzaniu danych. Dla przykładu współczesny układ GeForce GTX 680 ma moc obliczeniową wynoszącą 3090 gigaflopów, a Nvidia GeForce GTX 660 Ti 2,5 TFLOPS-a, podczas gdy procesor Intel Core i7-990X Extreme Edition pracujący z zegarem 3,46 GHz dysponuje wydajnością obliczeniową wynoszącą „tylko” 83,18 gigaflopów. Procesory serwerowe z rodziny Xeon pracując z pełną prędkością zegara przekraczają zaś niewiele ponad 100 GFLOPS-ów (np. Xeon E7-8870 ma moc obliczeniową 112 GFLOPS-ów)

Pierwsze prace nad wykorzystaniem kart graficznych do strumieniowego przetwarzania danych rozpoczęto w 2004 roku. Pierwsze udane próby wykorzystania do obliczeń karty graficznej miały miejsce w listopadzie 2004 roku. Wówczas to wykorzystano kartę Nvidia Quadro FX 3400 do obliczeń związanych z symulacją zapadającej się gwiazdy. Karta graficzna wykonała obliczenia czterokrotnie szybciej niż specjalnie optymalizowany kod na procesorze Intel Pentium 4 Xeon 3.0 GHz. Sukces ten dał podwaliny pod opracowanie akceleratorów obliczeniowych znanych obecnie pod nazwą Tesla.

Pierwsze Tesle pojawiły się na rynku pod koniec 2006 roku i bazowały na zmodernizowanych układach graficznych 8800 GTX, a ich procesory GPGPU oznaczone były symbolem Tesla T8P. Najnowsze i najszybsze akceleratory obliczeniowe Nvidii bazują na układach Kepler GK110 w których znajduje się w zależności od wersji 2688 (Tesla K20X) lub 2496 (Tesla K20) rdzeni CUDA.

 Tesla K20XTesla K20Tesla K10Tesla M2090Tesla M2075
Liczba i typ GPU1 Kepler GK1101 Kepler GK1102xKepler GK1041 Fermi GPU1 Fermi GPU
Wydajność obliczeniowa podwójnej precyzji1,31 TFLOPS1,17 TFLOPS190 GFLOPS (95 GFLOPS na jeden GPU)665 GFLOPS515 GFLOPS
Wydajność obliczeniowa pojedynczej precyzji3,95 TFLOPS3,52 TFLOPS4577 GFLOPS (2288 GFLOPS na jeden GPU)1331 GFLOPS1030 GFLOPS
Przepustowość pamięci250 GB/sec208 GB/sec320 GB/sec (160 GB/sec na jeden GPU)177 GB/sec150 GB/sec
Pojemność pamięci (GDDR5)6 GB5 GB8GB (4 GB na jeden GPU)6 GB6 GB
Liczba rdzeni CUDA268824963072 (1536 dla jednego GPU)512448