GPU를 활용한 연산 분산 구조 이해하기

John Jean·2025년 4월 3일

Unity

목록 보기
15/19

GPU와 GPGPU의 차이

GPGPU는 General Purpose computing on Graphic Processing Unit의 약자로 GPU를 그래픽 처리 뿐만 아니라 범용적인 계산에 사용하는 것을 칭한다.

원래 GPU의 용도는 그래픽 처리를 위한 보조장치였지만, CPU를 대신 해 데이터 연산 및 처리를 하는 범용 계산 장치로 쓰이게 되었다.

즉 GPU와 GPGPU는 GPU의 활용도에 따라 명칭이 나뉜다.

CPU와 GPU

  • CPU는 작업을 순차적으로 처리하는 직렬 형태로, 복잡한 계산 처리가 가능하다.
  • GPU는 수천개의 코어를 가지고 있어, 동일한 연산을 여러 데이터에 반복하는 병렬 작업에 매우 효율적.
  • GPU 코어 1개의 효율은 CPU 코어 1개에 비해 많이 떨어지지만, 코어의 개수가 매우 많다.
  • 따라서 엄청난 수의 스레드를 사용할 수 있다.
  • 대표적인 활용기술 : NVIDIA의 CUDA.

GPU가 어떤식으로 데이터를 처리하는지

먼저, 그래픽 카드 메모리 공간을 할당하고, PC의 입력 데이터를 그래픽 카드의 메모리로 복사하여 고성능의 GPU 성능을 활용하여 병렬처리 한다.

처리된 결과를 그래픽 카드 메모리에서 PC 메모리로 복사한다.

예제 : PhysX

기존 구조 : CPU 단독 처리

  • 게임 내 수많은 물리 연산은 모두 CPU에서 순차적으로 처리됨.
  • 연산이 많아질수록 CPU 병목 현상 발생 -> 프레임 저하

    게임 엔진 -> CPU 물리 연산 처리 -> 결과 렌더링

이 물리연산중 일부는 동시에 병렬처리 가능한 작업이다.(파편 거리 계산, 각 입자에 작용하는 중력 계산..)

GPGPU사용 (GPU 가속 처리)

병렬 연산이 가능한 작업들을 GPU로 오프로드하여 처리.

참고

유니티에서 기본적으로 제공하는 3D 물리엔진이 바로 PhysX엔진이다.

예제 : Blender

렌더링은 GPU의 병렬 처리 능력이 특히 잘 활용되는 대표적이 분야다.

예를 들어 블렌더는 수많은 메시를 빠르게 처리하기 위해 GPU연산을 적극 활용한다.

프로젝트 설정에서 쿠다를 사용한 렌더링 설정을 간편하게 할 수 있다.

이 설정만으로도 동일한 씬에서 렌더 시간이 몇 배 이상 줄어드는 경우도 많다.

참고

최근에는 Blender뿐 아니라 Maya, Houdini, Unreal Engine 등 다양한 툴들이 GPU 렌더링을 적극적으로 활용하고 있다.

특히 실시간 렌더링이나 고해상도 애니메이션 제작에서는 GPU 가속이 사실상 필수라고 함.

게임 프로젝트에서 적용의 한계점

  • 유저의 장비가 GPGPU를 지원한다는 보장이 없다.
  • 디버깅이 어렵다.
  • 게임 스크립트의 대부분은 의존성이 강하다. 다시말해, 병렬처리에 적합하지 않다.

학습 출처

https://www.clunix.com/insight/it_trends.php?boardid=ittrend&mode=view&idx=774

profile
크래프톤 6기 정글러

0개의 댓글