상단여백
HOME 뉴스·정책
멀티GPU는 메모리 관리를 어떻게…
  • 이원영 IT칼럼니스트
  • 승인 2016.09.23 09:30
  • 댓글 0




다중 GPU를 결합해 그래픽 성능을 높이는 기술로는 이미 엔비디아의 SLI나 AMD의 크로스파이어 같은 기술이 사용되고 있다. 하지만 새로운 API인 불칸(Vulkan)과 다이렉트X12에선 서로 다른 그래픽카드를 결합할 수도 있다. 다중 GPU를 결합한 멀티 GPU에선 어떤 작업이 이뤄질까.

엔비디아의 SLI와 AMD의 크로스파이어는 GPU 여러 개를 통합해 사용할 수 있게 해주는 멀티 GPU 기능이다. 하지만 다이렉트X12와 불칸은 지금까지 멀티 GPU를 구성할 때 발생하던 제한을 없앨 수 있다. 다이렉트X11까지 API는 게임과 다른 응용 프로그램에서 통합 API를 통한 그래픽 드라이버로 처리한다. 이는 같은 그래픽 드라이버 범위 내에서만 멀티 GPU를 제어할 수 있다는 걸 의미한다. 필연적으로 서로 다른 종류 GPU를 섞을 수 없는 구조였던 것.





이런 이유로 서로 다른 GPU를 다룰 수 있게 하려면 소프트웨어와 하드웨어 지원이 필요하다. 불칸이나 다이렉트X12는 CPU 스레드 여러 개를 독립 처리할 뿐 아니라 GPU도 별도 처리할 수 있다. 개발자는 서로 다른 목적을 가진 목록을 취급할 수 있다. GPU 메모리마다 서로 다른 데이터를 저장하거나 불필요한 데이터를 무시하게 할 수도 있다. 다만 게임 개발자가 작업이나 메모리는 제어할 수 있지만 그렇다고 해서 SLI나 크로스파이어보다 효율적으로 작업을 분배할 수 있다는 건 아니다.

AFR(Alternate Frame Rendering)는 프레임을 그리는 요청을 GPU마다 배분해 그리는 걸 가능하게 해주는 기술. AFR은 이상적인 상태에서 프레임 fps를 높이는 효과를 낸다.

AFR에서 프레임을 분할해 교대로 프레임을 그릴 때에는 GPU 메모리마다 같은 내용을 복제해야 한다. 이 때문에 오픈GL이나 다이렉트X11에선 예를 들어 GPU 메모리 4GGB짜리 그래픽카드 2개를 조합해도 4GB 밖에 사용할 수 없다.

하지만 다른 알고리즘도 있다. 사이드 스크롤 액션 게임을 예로 들면 배경과 놀이공간처럼 깊이가 다른 복수 레이어로 처리할 수 있다. 이 다른 레이어를 다른 GPU에 별도 이미지로 렌더링하게 한 뒤 합성해 한 화면에 그리는 게 가능하다. 메모리에는 장면마다 오프젝트 파편을 모아 넣는 것이다. 이렇게 그리는 방법의 장점은 GPU의 능력을 똑같이 관리할 필요가 없다는 것. 렌더링 부하가 작은 레이어는 CPU 내장 그래픽 코어에게 맡길 수 있다. AFR과 달리 상대적으로 성능이 떨어지는 오래된 GPU와 최신 GPU를 혼합해서 쓸 수 있는 것이다. 대용량 GPU 메모리를 가진 GPU라면 AFR는 유효한 기술이지만 지연시간 등을 늘려버린다.

한편 레이어 메소드는 복잡한 객체 드로잉 구현을 요구한다. 가상현실이나 3D 영상은 알고리즘의 혜택을 기대할 수 있다. 사람의 눈은 거의 같은 정보를 렌더링하고 있기 때문에 AFR에 가까운 작업을 하고 있다. 하지만 우리 눈은 AFR 같은 지연시간 문제 없이 균형을 잘 유지하고 있다. 게임 개발자는 게임 내용에 따라 GPU 관련 알고리즘을 적절하게 고를 필요가 있는 셈이다.

https://www.youtube.com/watch?v=czoZKjmYY6g

이원영 IT칼럼니스트  b612@glasspad.co.kr

<저작권자 © 테크홀릭, 무단 전재 및 재배포 금지>

이원영 IT칼럼니스트의 다른기사 보기
인기기사
추천기사
기사 댓글 0
전체보기
첫번째 댓글을 남겨주세요.
여백
여백
재미있는 테크월드 세상
여백
여백
여백
여백
여백
여백
여백
Back to Top