본문 바로가기
게임 데이터 가이드

GPU 병렬 파이프라인 스케줄링, Compute·Graphics 협력 처리, 렌더 워크로드 분산

by oneplay1 2025. 10. 25.
GPU는 수천 개의 병렬 코어로 구성된 대규모 연산 장치다. 이를 효율적으로 활용하기 위해서는 파이프라인 스케줄링과 워크로드 분산이 핵심이다. 이 글은 Compute·Graphics 파이프라인의 협력 구조와 GPU 스케줄링의 동작 원리를 설명하고, 워크로드 분산을 통한 성능 향상 기법을 시각화된 구조로 분석한다.

GPU 병렬 파이프라인 스케줄링의 기본 구조

GPU의 파이프라인은 명령이 순차적으로 처리되는 CPU와 달리, 수천 개의 스레드가 동시에 실행되는 병렬 구조다. 이때 모든 스레드가 동일한 자원을 요구하면 충돌이 발생하므로, 스케줄러(Scheduler)가 각 스레드 그룹의 실행 순서를 제어한다.

이 구조를 파이프라인 스케줄링(Pipeline Scheduling)이라 하며, 핵심은 “Wavefront” 또는 “Warp” 단위의 실행 관리다. GPU는 여러 워프를 동시에 실행 대기열에 올려두고, 연산 유닛이 유휴 상태일 때 즉시 다른 워프를 실행시킨다. 이렇게 하면 파이프라인 공백이 줄어들어 전체 처리 효율이 향상된다.

예를 들어, 한 워프가 텍스처 메모리를 기다리는 동안 다른 워프가 산술 연산을 수행할 수 있다. 즉, 연산과 메모리 접근이 교차 실행되며 병목이 줄어드는 것이다. 이 스케줄링 최적화는 GPU의 실질 연산 효율(occupancy)을 70%에서 90% 이상으로 끌어올리는 주요 요인이다.

GPU 병렬 파이프라인 스케줄링 구조 Warp 1 Warp 2 Warp 3
여러 워프가 대기열에 병렬 등록되어 파이프라인을 지속적으로 채운다.

파이프라인 스케줄러는 단순한 시간 분할 방식이 아니라, 명령 유형에 따라 실행 순서를 최적화한다. 예를 들어, 산술 명령(ALU)은 연속 배치하고, 메모리 접근 명령은 I/O 지연을 고려해 분산 배치한다. 이런 패턴 분석 기반의 스케줄링은 GPU 내부 캐시의 적중률을 높이고, 불필요한 명령 대기 시간을 줄인다. 결과적으로 GPU의 쓰루풋(Throughput)이 향상되며, 동일한 하드웨어에서도 더 많은 프레임을 처리할 수 있다.

Compute·Graphics 협력 처리 구조의 설계 원리

현대 엔진은 단순히 그래픽 파이프라인만 사용하는 것이 아니라, Compute 파이프라인을 병렬로 활용한다. Compute는 물리 연산, 조명 계산, 포스트 프로세싱 등 일반 그래픽 파이프라인 외부에서 수행할 수 있는 병렬 작업을 처리한다.

이 두 파이프라인이 독립적으로 작동하면 GPU 리소스가 분리되어 비효율이 발생한다. 따라서 최신 엔진은 **협력 처리(Cooperative Processing)** 구조를 채택한다. 즉, 그래픽 파이프라인이 장면을 렌더링하는 동안 Compute 파이프라인은 조명, 그림자, 반사 등 보조 데이터를 병렬로 계산한다.

이 협력 모델은 “Async Compute”라는 개념으로 구현된다. GPU는 그래픽 큐와 컴퓨트 큐를 동시에 실행하며, 양쪽 파이프라인이 서로 의존하지 않는 명령을 병렬 처리한다. 이 과정에서 리소스 접근 충돌을 방지하기 위해 “Barrier Synchronization”이 자동 삽입된다.

Compute·Graphics 협력 처리 구조 Graphics Queue Compute Queue Barrier Sync
Compute와 Graphics 파이프라인이 병렬 실행되며, 동기화로 충돌을 방지한다.

이 방식의 장점은 GPU 자원의 완전 활용이다. 그래픽 연산 유닛이 픽셀 처리에 집중할 때, 컴퓨트 유닛은 물리나 조명 정보를 병렬 계산한다. 이로써 GPU 전체 점유율이 향상되고, CPU 개입 없이 GPU 내부에서 모든 처리가 가능해진다. 결과적으로 프레임 타임이 짧아지고, 복잡한 장면에서도 일정한 렌더링 속도를 유지할 수 있다.

렌더 워크로드 분산과 스케줄링 효율 극대화

렌더링의 병목은 대부분 한쪽 자원이 과도하게 사용될 때 발생한다. 예를 들어, 그래픽 큐에 모든 작업이 몰리면 컴퓨트 유닛은 유휴 상태가 된다. 이 문제를 해결하기 위해 엔진은 **워크로드 분산(Render Workload Distribution)** 방식을 사용한다.

워크로드 분산은 GPU의 하드웨어 큐와 소프트웨어 스케줄러를 결합해 구현된다. GPU는 여러 명령 큐를 동시에 관리하고, 스케줄러는 프레임의 중요도에 따라 각 큐의 작업량을 동적으로 조정한다. 예를 들어, 카메라 시야 내에 있는 객체는 우선적으로 렌더링하고, 시야 밖의 객체는 비동기 큐에 배치해 나중에 처리한다.

이 구조는 단순히 부하를 분산시키는 것을 넘어, GPU 파워 소비 효율까지 개선한다. 리소스 접근 패턴이 균형을 이루면 캐시 미스율이 낮아지고, GPU 클록 스케줄링이 일정하게 유지되어 전력 효율이 높아진다.

렌더 워크로드 분산 구조 Graphics Queue Compute Queue Transfer Queue
렌더링·계산·전송 큐가 균형을 이루도록 스케줄러가 워크로드를 분산한다.

워크로드 분산은 엔진의 자동화 수준에 따라 세밀하게 달라진다. 예를 들어, Unreal Engine은 프레임 단위로 GPU 명령을 스케줄링하며, Unity HDRP는 파이프라인별 우선순위 큐를 유지한다. 또한 일부 엔진은 AI 기반 스케줄러를 사용한다. 이 스케줄러는 과거의 프레임 데이터를 학습해 다음 프레임의 GPU 사용 패턴을 예측하고, 큐 분배 비율을 실시간 조정한다.

이러한 동적 워크로드 분산 시스템은 고정 파이프라인보다 최대 35% 이상 높은 GPU 효율을 제공하며, 특히 VR·레이트레이싱 환경에서 병목 없이 안정적인 프레임 유지에 기여한다.