GPU와 GPGPU

1. 개요
GPU는 PC의 그래픽 성능을 좌우하는 그래픽 카드의 핵심 칩임.
- 1990년대 초기까지만 해도 그래픽 카드는 CPU의 연산 결과를 그림이나 글자 신호로 변환하여 모니터로 출력하는 어댑터로 인식됨.
- 1990년대 중반 이후부터 멀티미디어 콘텐츠, 특히 게임이 주목받으면서
- CPU를 보조할 3D 그래픽 연산 전용 프로세서, 즉 GPU가 그래픽 카드에 탑재되기 시작함.
2. GPU의 등장
GPU라는 용어는
- NVIDIA가
- 1999년에
GeForce라는 이름의 새로운 그래픽 컨트롤러(Graphics Controller, 그래픽 카드용 칩)를 - 내놓으며 처음 제창한 것임.
2000년에는 ATI, 현재의 AMD가 Radeon이라는 GPU를 출시하면서 양사의 경쟁이 본격화됨.
2023년 기준으로는
- NVIDIA의 강력한 소프트웨어 라이브러리와 개발 환경 제공 (CUDA)으로 인해
- 사실상 NVIDIA가 시장의 대세가 된 상황이며,
- 특히 GPGPU 분야에서는 독점에 가까운 수준에 이르고 있음.
3. GPU의 발전 방향
신형 GPU일수록 더 미세한 공정으로 제조되어 같은 면적에 집적되는 트랜지스터 수가 늘어나는 추세임.
하나의 기판에 여러 개의 GPU를 동시에 탑재하여 성능을 높이는 Multi-GPU 환경도 도입되기 시작함.
현대의 GPU에는 다양한 기능이 추가되어 동영상 재생 품질과 인코딩 속도를 향상시키는 NVIDIA의 PureVideo, AMD의 Avivo(Advanced Video In Video Out) 같은 기술도 제공됨.
또한 GPU의 강력한 병렬 연산 처리 기능을 일반 프로그래밍에 활용할 수 있도록 API가 제공되면서,
- 그래픽 및 디스플레이 작업 이외의
- 범용 작업에 GPU를 사용하는 경우가 늘어남.
- 이를 위한 GPU 활용 방식을 GPGPU(General Purpose GPU)라고 함.
4. CPU + GPU = CPU 내장형 그래픽 프로세서
CPU 내에 GPU를 탑재하여 통합한 형태임.
- 하나의 칩 안에서 CPU 부분과 GPU 부분이 동일한 버스를 사용하므로 상호 간 데이터 전달 효율을 높일 수 있음.
- 복잡한 프로그래밍 과정 없이 CPU의 장점인 정수 연산 능력과 GPU의 장점인 부동소수점 연산 능력을 동시에 활용할 수 있어
- 범용 작업에 적용하기가 용이함.
AMD에서는 이를 APU(Accelerated Processing Unit, 가속 처리 장치)라고 부름.
Computer Graphics는
- 수백만 개의 pixel에 대해 각 intensity 값에 따라 특정 색상 또는 밝기 값을 지정하고,
- 이를 초당 60회 이상 반복하여 화면에 표시하는 작업을 수행하는 경우가 일반적임.
- 또한 비슷하거나 같은 연산이 여러 pixel에 반복적으로 적용되는 경우가 많으므로,
- GPU는 병렬 연산 능력에서 CPU보다 압도적으로 유리함.
즉,
비교적 단순한 연산을
수천 개 이상 동시에 수행하는 작업에서는 GPU가 유리함.
5. GPGPU and Parallel Programming
GPU는
- 부동소수점 연산을 수행할 수 있는 ALU 기반 core를 수천 개 가지고 있기 때문에,
- 수천 개의 부동소수점 연산을 병렬로 동시에 수행할 수 있음.
또한 동시에 수천 개의 연산에 필요한 operand를 공급해야 하므로
CPU에 비해 훨씬 넓은 memory bus를 가지고 있으며,
매우 빠른 속도로 memory에 접근할 수 있다는 특징을 가짐.
이러한 병렬 연산 기능을 범용 작업, 특히 딥러닝 기술 구현에 적용할 수 있도록 GPGPU가 사용되며,
이를 이용한 프로그래밍을 가능하게 해주는 라이브러리로 NVIDIA의 CUDA가 제공됨.
또한 이러한 라이브러리를 기반으로 고속 연산이 필요한 다양한 분야에서 고유한 framework들이 제공되고 있음.
대표적으로 PyTorch, TensorFlow 등이 있음.
GPGPU는 딥러닝 학습과 추론의 핵심 장치로 자리 잡았지만,
GPU에는 graphics pipeline 등 딥러닝에 직접 필요하지 않은 기능도 포함되어 있음.
최근의 data center AI GPU는 딥러닝 학습·추론과 HPC에 초점을 두기 때문에
graphics/display 기능이 없거나 매우 제한적인 경우도 있음.
이 때문에 tensor 연산이나 neural network 연산에 더 특화된 전용 accelerator로
TPU(Tensor Processing Unit), NPU(Neural Processing Unit) 등이 개발됨.
- 일반적으로 TPU는 학습과 추론 모두에 사용될 수 있고,
- NPU는 특히 edge device나 mobile device에서 추론을 저전력으로 수행하는 데 많이 사용됨.
특히, TPU는 특정 신경망 연산에 특화되어 있으며, 대규모 병렬 시스템을 구성하기 쉽도록 설계된 accelerator임.
단, Colab 등의 개발 환경에서 1개의 device만 사용하여 비교할 경우 GPGPU가 더 빠르게 처리되는 경우가 일반적임.
- 여러 문서에서는 신경망 관련 연산에서 TPU가 더 효율적으로 설계 및 구현되어 있다고 설명하지만,
- 2022년 12월 기준 Colab에서는 GPGPU가 더 빠른 경우가 많았음.
- 다만 실제 device 가격은 일반적으로 고성능 GPGPU가 훨씬 비싼 편임.
같이보면 좋은 자료들
TPU관련:
https://dsaint31.me/mkdocs_site/CE/ch04/ce04_51_gpu_tpu/
BME
gpu tpu Graphics Processing Units 다음 URL을 확인할 것. 아래 그림은 CPU와 GPU의 차이점을 모식도로 표현함. 병렬처리에 최적화된 GPU의 특징인 다수의 core 를 볼 수 있음. GPGPU (General Purpose Graphics Processing U
dsaint31.me
https://dsaint31.me/mkdocs_site/CE/colab/colab_ai_acce/
BME
AI 가속기 for Colab 및 아키텍처 종합 정리 1. AI Accelerators Combined (NVIDIA GPU + Google TPU, Sorted by Performance) NVIDIA 아키텍처는 Turing → Ampere → Hopper → Ada Lovelace → Blackwell → Rubin 순으로 발전함. Google TPU
dsaint31.me
'Computer > CE' 카테고리의 다른 글
| [CE] Processor and Core (0) | 2022.12.18 |
|---|---|
| [CE] Microprocessor (0) | 2022.12.18 |
| [CE] Instruction Set Architecture (ISA): RISC vs. CISC (0) | 2022.12.18 |
| [CE] Control Unit and Instruction (0) | 2022.12.17 |
| [CE] Flash Memory (or PROM Flash) and SSD (Solid State Drive) (1) | 2022.12.10 |