Paradigm change on Graphics Programming from Multi-core Programming

앞의 Future change of Game Engine Paradigm에 연결 되는 글로 멀티 코어와 관련된 내용으로 Teze님과 이야기 했던 것을 정리해 봤습니다. 그냥 가볍게 읽어 주세요. ^^;


현재에는 GPU를 차용한 컴퓨터가 표준이지만 미래에도 표준이 될지는 의문입니다. 최하위 그래픽 카드와 최상위 그래픽 카드 간의 격차가 과거의 부두(Voodoo) 시절과 비교하면 100배 이상 차이가 나는 상황에서 특정 영역대의 GPU는 지원을 포기할 수 밖에 없습니다. 그리고 앞으로는 멀티 코어 CPU가 대세가 될 것이기 때문에 이러한 하드웨어 환경에서는 소프트웨어 렌더러를 개발해서 여분의 CPU 코어들을 적절히 사용하는 것이 PC 플랫폼에서는 더 나은 성능을 발휘할 수도 있습니다. 그렇게 때문에 과거의 하드웨어 가속을 지원하는 API는 더 이상 PC 플랫폼에서 표준으로서의 의미가 없을 것이라는 것도 유추해 볼 수 있습니다. 다른 관점에서 보면 과거의 트렌드가 부활하는 주기의 변화가 왔다고도 볼 수 있습니다. 앞으로의 PC 플랫폼에서의 성능 향상과 관련된 게임 프로그래밍 패러다임은 특화된 프로세서(GPU) 보다는 남는 범용 프로세서를 활용하는 것이 더욱 유리하다는 이야기로 해석할 수 있는 부분입니다.

ATI는 이미 AMD와 합병이 되었고 nVidia 역시 Intel과 합병될 가능성이 큽니다. 최근의 이러한 기업들 간의 인수합병도 앞에서 언급한 변화를 가늠할수 있는 예라고 할 수 있습니다. 이렇게 보면 이제 예전의 IBM과 같은 거대한 플랫폼 벤더가 등장할 수도 있다는 것도 쉽게 상상할 수 있을 것입니다.

초창기의 GPU(DX7 based)가 고정 함수 파이프라인이었던 것은 기술적인 문제 때문이었지만 그 후 기술이 발전하면서 프로그래밍 가능한 GPU가 등장하게 되었습니다. 그런데 기술이 발전하면서 GPU 프로그래밍 조차도 점점 더 범용적인 프로그래밍이 가능한 쪽으로 발전이 되어 왔습니다. 그리고 CPU는 멀티 미디어와 관련한 연산 능력이 계속 강화되어 왔습니다. 이러한 사실들을 이전의 대부분의 DSP 칩들이 일반적인 범용 프로세서로 통합 되었다는 사실에 비추어 볼 때 이후의 GPU 역시 CPU에 통합될 수도 있다는 것을 예상할 수 있습니다.

현재 렌더러(Renderer)를 만드는 일이 대부분 쉐이더(Shader)와 관련이 있는 듯 보이지만 예전에 소트웨웨어 렌더러(Software Renderer)를 작성하는 일과 비교해 보면 차이가 없을 정도의 복잡도를 보이고 있습니다. 즉, 기술의 발전이 실상 프로그래머를 편하게 만들지는 못했다는 것입니다. 이것을 보면 프로그래머들이 가장 편했던 때는 DX7의 마지막 시대가 아니었나 싶기도 합니다.

언리얼2는 RAD 게임툴즈의 '픽사오메틱' 렌더러를 내장하고 있는데 이것은 순수 소프트웨어 렌더러입니다. 이렇게 보면 언리얼 엔진에서 순수 소프트웨어 렌더러가 빠진 유일한 버전이 언리얼3가 됩니다. 그래서 이 후에 소프트웨어 렌더러가 주종을 이루는 시대로 패러다임이 전환되더라도 이들한테는 별다른 이슈가 되지 않을 것 같네요.

정리해 보면 팀 스위니씨가 언급한 내용(Future change of Game Engine Paradigm에서 팀 스위니씨가 언급한 내용)은 아마도 10년 이후를 생각하는 것으로 보여집니다. 현재의 구조를 발전 시킨 모델로 언리얼 4는 가능할 것으로 예상이 되고 그 이후의 컴퓨팅 환경이나 입력 디바이스를 고려한 변화는 언리얼 5가 될 것으로 생각됩니다. 바꾸어 이야기하면 언리얼 4까지는 현재의 컴퓨팅 환경을 고려하면 큰 변화가 없을지 모르겠지만 그 이후의 언리얼 엔진에서는 컴퓨팅 환경의 변화를 고려할 때 엔진의 패러다임에도 근본적인 변화가 불가피하다는 이야기를 하고 있는 것으로 보여집니다.

일전에 썼던 멀티 쓰레드 프로그래밍과 관련한 글(2007 게임 백서)에서 32 코어 이후는 현재의 멀티 쓰레드 모델과는 달리 객체 단위의 쓰레드 모델이 더 나은 모델이 될 수도 있다고 언급한 적이 있습니다. 여기서 객체 단위의 쓰레드 모델이라는 말은 태스크 단위의 쓰레드와 구분되는 의미를 가지고 있는 것으로 몹(MOB)당 하나의 쓰레드를 사용하는 것과 같은 것을 말합니다.

현재의 슈퍼 컴퓨터는 수백 단위이므로 10년 뒤를 생각하면 이러한 변화도 가능하다고 보여집니다. 또한 외부 인터페이스나 내부 망을 이용한 그리드(Grid) 컴퓨팅 컨셉의 등장도 예상이 됩니다. 이 경우에는 엔진 내부적으로도 프로세스의 처리나 이벤트 처리와 같은 패러다임의 변화가 불가피하게 될 것입니다.

언리얼 5에서는 이상의 변화를 고려하고 있는 것이 아닐까 생각됩니다.

지금도 팀 스위니씨가 작업용으로 사용하고 있는 컴퓨터는 델 워크스테이션으로 기본적으로 8 코어 짜리 듀얼 머신이라고 합니다. 에픽(Epic)의 프로그래머들은 기본적으로 그 정도의 사양을 가진 하드웨어를 사용한다는 이야기를 들은 적이 있습니다. 현재는 라이트맵(Lightmap)의 베이킹(Baking) 정도에 사용할 지 모르겠지만 앞으로는 그 이상의 작업에 사용할 것 같군요.

여러분도 한번 고민해 보시길 권합니다. 멀티 코어가 주류가 될 때 어떤 변화를 준비해 할 지~

by kimsama | 2008/03/26 18:52 | MultiCore | 트랙백 | 덧글(6)

트랙백 주소 : http://kimsama.egloos.com/tb/1732163
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by kimsama at 2008/03/26 20:51
구글 문서로 작성해서 이글루스 API로 포스팅해 봤습니다. 진작에 이렇게 할 것을 ㅡ.ㅡ
예전에 웹페이지 저작 도구(이름이 잘 ^^;)로는 깔끔하게 작성되지 않는데 말입니다. ㅎ 이제 구글로 작성할 생각입니다.
Commented by kimsama at 2008/03/26 20:51
이글루스 API는 여기에서 http://help.egloos.com/2922
Commented by kimsama at 2008/03/26 20:57
행간이 좀 넓어서 생각이 필요한 부분도 보입니다 ^^; 이해해 주시길~~
Commented by kimsama at 2008/03/26 21:00
Teze님이 국내에서는 언리얼 1,2,3 모두로 개발해 보신 몇 안되는 분이시라...문화재에 비유하자면 중요 무형 문화재 xx호 이렇게 이야기 할 수 있는 분이죠 ㅋ ^^; - 머리 속이 심연이세요, 한번씩 이야기하다 보면 지식의 깊이가 안보여요. ㅋㅋ
Commented by 김윤정 at 2008/03/27 00:25
무, 무섭군요....
Commented by kimsama at 2008/03/27 10:01
한글로 포스팅하니까 오시는군요. ㅡㅡ; 잘못했습니다, 이제 여기에 영문 포스팅 안올릴께요~ ㅋㅋ ^^;

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶