1. GPGPU의 개요
가. 정의
GPGPU는 그래픽 처리를 위해 설계된 GPU의 대규모 병렬 연산능력을 범용 응용프로그램의 연산에 활용하는 병렬 컴퓨팅 기술이다.
나. 등장배경
- AI·과학연산·영상처리 등 대규모 병렬연산 요구 증가
- CPU의 소수 고성능 Core 방식에서 GPU의 다수 Core를 활용한 병렬처리로 연산 가속
2. GPGPU 구조 및 구성요소

- GPU : 다수 SM으로 구성. 대규모 병렬 연산 수행
- SM(Streaming Multiprocessor) : Thread들을 그룹화하여 스케줄링 명령·실행
- SP(Straming Processor) : SM 내부에서 실제 산술·논리 연산 실행
- Register : Thread별 데이터의 고속 저장
- Shared Memory/L1 : SM 내부 Thread 간 데이터 공유 및 고속 접근
3. GPGPU 처리과정
① 데이터 전송 → ② Kernel 실행 → ③ 병렬연산 → ④ 결과 회수
① CPU가 Main Memory의 데이터를 GPU Memory로 전송
② CPU(Host)가 GPU에 Kernel 실행 명령
③ GPU의 다수 Thread가 병렬로 연산 수행
④ 연산 결과를 GPU Memory에서 Main Memory로 전송
→ 최근에는 Unified Memory, 고속 인터커넥트 등 활용
4. GPGPU 특징 및 활용
| 장점 | 높은 병렬처리 성능, 높은 메모리 대역폭, 부동소수점·행렬연산에 유리 |
| 단점 | 분기·복잡한 흐름제어에 불리, 병렬화 가능한 문제만에 적합, CPU-GPU 데이터 전송 오버헤드 |
| CPU | Core당 성능보다 다수 Core를 이용한 Throughput 중심 |
| 활용 | AI/DL : 행렬·Tensor 연산 가속 HPC : 기상예측, 유체해석, 과학 시뮬레이션 영상처리 : Rendering, Encoding, Computer Vision |
5. GPGPU 프로그래밍 플랫폼
| 플랫폼 | 특징 |
| CUDA | NVIDIA, CUDA C/C++, Kernel 기반 병렬 프로그래밍, NVIDIA GPU 종속 |
| OpenCL | Khronos Group, CPU·GPU 등 이기종 플랫폼 지원, 높은 이식성 |
| OpenACC | Directive 기반 병렬화, 기존 C/C++/Fortran 코드의 GPU 가속 용이 |
| C++ AMP | Microsoft의 C++ 기반 병렬 프로그래밍 모델, DirectX 기반 GPU 활용 |


답글 남기기