Wprowadzenie do architektury GPU
GPU vs. CPU
Podobieństwa
- wykorzystanie pamięci cache o ustrukturyzowanej hierarchii,
- składają się z rdzeni (jednostek obliczeniowych),
- posiadają jednostki arytmetyczno-logiczne (ALU) do wykonywania operacji matematycznych,
- obsługują operacje na wartościach zmiennoprzecinkowych i całkowitych.
Różnice
- Liczebność ALU:
- CPU: ma kilka złożonych jednostek ALU, zwykle od 4 do 64 na rdzeń,
- GPU: liczba ALU (tożsame z rdzeniami) jest liczona w tysiącach.
- Taktowanie ALU:
- CPU: taktowanie ALU zwykle w częstotliwościach 3-4 GHz,
- GPU: taktowanie ALU zwykle w częstotliwościach 765-1200 MHz.
- Pamięć:
- CPU: korzysta z globalnej pamięci DRAM,
- GPU: korzysta z globalnej pamięci DRAM, ale także z własnej wersji DRAM,
- CPU: niskie opóźnienia, szybki dostęp do pamięci RAM i cache na poziomach L1-L3,
- GPU: większa przepustowość, ale także wyższe opóźnienia w dostępie do pamięci globalnej.
Obliczenia sekwencyjne vs. równoległe
ADD R1, R2, R3
MUL R4, R1, R5
DIV R6, R4, R7
ADD R1, R2, R3
MUL R4, R5, R6
DIV R7, R8, R9
Kalendarium historii GPU
- Początki GPU - grafika komputerowa:
- lata ‘80 - pierwsze układy graficzne stosowane do renderowania grafiki 2D,
- 1999 - pierwszy GPU: NVIDIA GeForce 256 z możliwością sprzętowego przetwarzania geometrii 3D.
- Przejście GPU do programowalnej architektury:
- 2001 - początek programowalnych jednostek cieniujących (shakery) w postaci NVIDIA GeForce 3 i DirectX 8,
- 2006 - wprowadzenie technologii NVIDIA CUDA umożliwiającej stosowanie GPU w celu wykonywania dowolnych obliczeń, w szczególności równoległych, w szczególności w modelach SIMD i SPMD.
- Początki akceleratorów obliczeniowych:
- 2010 - wprowadzenie architektury Fermi oraz hierarchicznej pamięci podręcznej L1 i L2 wraz z bezpieczną pamięcią ECC,
- 2012 - GPU dokonują przełomu w uczeniu głębokim poprzez wykazanie znacznego przyspieszenia treningu sieci neuronowych na przykładzie konkursu ImageNet.
- Powszechne zastosowania w GPU w HPC i uczeniu głębokim:
- 2017 - wprowadzenie rdzeni Tensorowych w generacji Volta,
- 2018 - wprowadzenie rozwiązań “Ray Tracing” i “RT Core” umożliwiające bardziej realistyczne renderowanie grafiki,
- 2020 - wprowadzenie trzeciej generacji rdzeni tensorowych w generacji Ampere, które obsługują różne precyzje obliczeń,
- 2022 - wprowadzenie generacji Hopper, obecnie najpopularniejszej w zastosowaniach ogólnych.