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 K20X | Tesla K20 | Tesla K10 | Tesla M2090 | Tesla M2075 | |
Liczba i typ GPU | 1 Kepler GK110 | 1 Kepler GK110 | 2xKepler GK104 | 1 Fermi GPU | 1 Fermi GPU |
Wydajność obliczeniowa podwójnej precyzji | 1,31 TFLOPS | 1,17 TFLOPS | 190 GFLOPS (95 GFLOPS na jeden GPU) | 665 GFLOPS | 515 GFLOPS |
Wydajność obliczeniowa pojedynczej precyzji | 3,95 TFLOPS | 3,52 TFLOPS | 4577 GFLOPS (2288 GFLOPS na jeden GPU) | 1331 GFLOPS | 1030 GFLOPS |
Przepustowość pamięci | 250 GB/sec | 208 GB/sec | 320 GB/sec (160 GB/sec na jeden GPU) | 177 GB/sec | 150 GB/sec |
Pojemność pamięci (GDDR5) | 6 GB | 5 GB | 8GB (4 GB na jeden GPU) | 6 GB | 6 GB |
Liczba rdzeni CUDA | 2688 | 2496 | 3072 (1536 dla jednego GPU) | 512 | 448 |