Quick Comparison
GPU로 옮길 계산이 충분히 크고 병렬적이며, CPU와 GPU 사이 데이터 전송·동기화 비용보다 얻는 이득이 커야 합니다.
| 작업 성격 | CPU 우선 | GPU 우선 |
|---|---|---|
| 복잡한 분기와 순차 의존 | 적합 | 효율이 떨어질 수 있음 |
| 같은 계산을 많은 원소에 적용 | 규모가 작으면 충분 | 큰 규모에서 강점 |
| 운영체제·파일·네트워크 제어 | 담당 | 직접 대체하지 않음 |
| 렌더링·이미지·행렬 대량 처리 | 조립과 명령 제출 | 실제 병렬 계산 |
작업 분리
CPU는 지연 시간이 중요한 순차 작업과 복잡한 제어 흐름에 강합니다. GPU는 많은 실행 단위가 비슷한 명령을 데이터 여러 개에 적용할 때 높은 처리량을 냅니다. 렌더링에서는 CPU가 장면과 명령을 준비하고 GPU가 정점·픽셀 계산을 병렬 처리합니다.
GPU kernel이나 compute shader의 일부 실행만 다른 분기를 타면 같은 묶음의 실행 단위가 경로를 나누어 처리할 수 있습니다. 이를 무조건 실패라고 볼 수는 없지만, 분기가 심하고 작업량이 제각각이면 병렬 효율이 떨어질 수 있습니다.
전송과 동기화
작은 계산 하나를 위해 매번 데이터를 GPU에 올리고 결과를 즉시 CPU로 읽으면 전송과 동기화가 계산보다 비쌀 수 있습니다. GPU 결과를 같은 GPU 작업에서 계속 소비하거나 여러 작업을 묶어 전송 횟수를 줄일 수 있을 때 이점이 커집니다.
게임에서는 물리·AI를 GPU로 옮길 수 있는지보다 결과가 언제 CPU에 필요한지를 먼저 봅니다. 같은 frame에 CPU가 결과를 기다리면 pipeline stall이 생길 수 있습니다.
자주 틀리는 점
- core 수만 비교해 CPU와 GPU 성능을 판단하지 않습니다. core의 구조와 실행 모델이 다릅니다.
- GPU 작업은 자동으로 무료 병렬화되지 않습니다. 데이터 배치와 동기화 설계가 필요합니다.
- 모든 GPU가 같은 기능과 성능을 제공하지 않습니다. feature level과 하드웨어 지원을 확인합니다.
- GPU 사용률이 높다는 사실만으로 병목이 GPU라고 확정하지 않습니다. CPU 제출과 대기도 측정합니다.
참고 링크
2 sources