- GPU는 CPU보다 10~100배 더 강력하지만, 동적 작업 처리에 어려움이 있고 병렬 프로그래밍 도구가 부족해 일반 작업에서 성능을 충분히 활용하지 못하고 있음
- 과거에 Connection Machine, Cell, Larrabee 같은 병렬 컴퓨터 디자인이 있었지만 프로그래밍 모델의 복잡성 등으로 실패함
- 현대 GPU는 메모리 관리 문제와 복잡한 실행 모델 때문에 성능 최적화가 어렵고, 큐 기반의 효율적인 데이터 전달 구조가 필요함
- AI 가속기와 병렬 코어 집합 같은 새로운 아키텍처가 GPU의 한계를 극복할 가능성이 있음
- 병렬 컴퓨터의 발전은 아직 미완성 상태이며, 단순하고 효율적인 실행 모델과 프로그래밍 도구의 개선이 필요함
GPU의 강력한 성능과 한계
- GPU는 CPU보다 약 10~100배 더 강력함 (작업 종류에 따라 다름)
- 실시간 그래픽 렌더링 및 머신러닝에서는 이 성능이 잘 활용되고 있음
- 그러나 GPU 성능이 일반적인 작업에서 충분히 활용되지 못하고 있음
GPU의 한계 원인
- 빈약한 실행 모델
- GPU는 예측 가능한 대규모 데이터(예: 밀집 행렬 곱셈)에 강하지만 동적 작업에서는 성능이 떨어짐
- 부족한 언어 및 도구
- 병렬 컴퓨터 프로그래밍 자체가 매우 어려움
복잡성의 증가
- 최신 GPU는 복잡성이 빠르게 증가하고 있음
- 메시 셰이더(mesh shaders), 워크 그래프(work graphs) 등의 새로운 기능이 도입되었지만 일부 기본 작업은 여전히 지원되지 않음
복잡한 GPU 메모리 효율 문제
- 필자는 Vello라는 고급 2D 벡터 그래픽 렌더러를 개발 중
- CPU가 장면 설명(SVG 형식) 업로드 → 컴퓨트 셰이더가 처리 후 이미지 생성
- 문제점: 메모리 관리의 어려움
- 중간 결과 저장을 위한 버퍼 크기 예측이 어려움
- 버퍼 초과 시 GPU에서 CPU로 읽기 작업이 성능 저하를 초래함
해결책 제안
과거의 병렬 컴퓨터 디자인
-
Connection Machine (1985)
- 64k 프로세서가 하이퍼큐브 네트워크로 연결된 병렬 컴퓨터
- 각각의 프로세서는 성능이 낮았지만 대규모 병렬 작업이 가능
- 병렬 알고리즘 연구에 큰 기여
-
Cell (2006, PS3)
- PS3에 포함된 병렬 컴퓨터 (약 87.4백만 대 출하)
- 8개의 병렬 코어가 독립적으로 연산 수행 가능
- 프로그래밍 모델의 복잡성이 실패 원인
-
Larrabee (2008)
- x86 기반 병렬 컴퓨터로 개발됨
- 실패 이유: 전력 소비 및 소프트웨어 지원 부족
- 이후 Xeon Phi 및 AVX-512 명령어로 이어짐
변화하는 작업 부하
- 게임에서도 연산 작업 비중이 증가
- Starfield의 경우 총 작업 시간의 약 **50%**가 연산
- Nanite 렌더러는 작은 삼각형의 래스터화도 연산으로 처리
앞으로의 발전 방향
-
1. 코어 집합 확장 (Cell 부활)
- 현대의 고급 CPU는 1000억 개 이상의 트랜지스터 포함
- 저전력의 단순한 RISC 코어를 수백~수천 개 포함한 칩 제작 가능
- AI 가속기는 이미 유사한 아키텍처 채택 중
-
2. GPU에서 Vulkan 명령 실행
- GPU에서 직접 Vulkan 명령 실행 가능하도록 지원
- 현재 일부 Vulkan 확장에서 제한적으로 구현됨
-
3. 워크 그래프(Work Graph)
- 프로그램을 노드(커널)와 엣지(큐)로 구성
- 병렬로 실행되나 다음과 같은 제한 사항 존재
- 조인(join) 작업이 어려움
- 요소의 정렬 순서 보장 안됨
- 가변 크기 요소 지원 안됨
-
4. CPU와의 융합 진화
- 고성능 CPU 디자인이 병렬 처리에 최적화될 가능성
- 병렬 연산 및 SIMD(단일 명령 다중 데이터) 처리 성능 개선 중
-
5. 하드웨어는 이미 준비되어 있을 가능성
- 일부 GPU에는 사용자 코드 실행 가능한 명령 프로세서 포함
- 명령 프로세서가 완전히 개방되면 성능 개선 가능성 존재
복잡성 문제
- GPU 아키텍처는 지나치게 복잡함
- 병렬 컴퓨터 + 특수 하드웨어 + 명령 처리 구조가 혼재
- 다양한 API와 드라이버 호환성 문제
- 반면, CPU는 단순한 명령 집합 기반에서 성능 향상 지속
결론
- 병렬 컴퓨터의 발전은 아직 미완성 상태
- GPU가 그래픽 및 AI 작업 외에도 일반 작업에 최적화되기 위해 다음이 필요함
- 단순한 실행 모델
- 프로그래밍 용이성
- 낮은 전력 소비
- Vello 같은 고급 2D 렌더러 작업에서 병렬 컴퓨터의 성능을 온전히 활용 가능할 것
- GPU의 성능 한계를 극복할 새로운 병렬 컴퓨터 아키텍처가 필요함