gpu와 cpu ...

2D, 3D, 다각형, 픽셀 등 게임의 그래픽 프로그래밍에 관한 포럼입니다.

Moderator: 류광

Locked
비회원

gpu와 cpu ...

Post by 비회원 »

요즘은 gpu가 cpu보다 월등히 속도가 빨라짐에 따라
쿼드트리, lod, 퓨러스텀 컬링 등이 오히려 불필요 해졌다고 하던데요 ...
컬링하는것이 오히려 렌더링 속도가 나오지 않는다고도 하던데요 ...
그리고 lod 쓰나 안쓰나 속도에 별반 차이 나지 않는다고도 하고 ...
그럼 3D 프로그래머는 무엇을 해야 하나요 ... ??
여러분의 생각은 어떤가요 ... ??
비회원

.

Post by 비회원 »

글쎄요.
본인이 겪어보기 전까지는 남이 그냥 아무 생각없이 흘리는 것들에 주의를 기울일 필요는 없을 것 같습니다.
zupet
Posts: 2764
Joined: 2003-05-13 03:34
Location: NCSOFT LE팀

Re: gpu와 cpu ...

Post by zupet »

비회원 wrote:요즘은 gpu가 cpu보다 월등히 속도가 빨라짐에 따라
쿼드트리, lod, 퓨러스텀 컬링 등이 오히려 불필요 해졌다고 하던데요 ...
컬링하는것이 오히려 렌더링 속도가 나오지 않는다고도 하던데요 ...
그리고 lod 쓰나 안쓰나 속도에 별반 차이 나지 않는다고도 하고 ...
그럼 3D 프로그래머는 무엇을 해야 하나요 ... ??
여러분의 생각은 어떤가요 ... ??
꼭 그렇지는 않습니다. 예를 들어 최신형 그래픽 카드를 사용할 경우 둠2 시절의 그래픽은 BSP나 컬링같은게 전혀 없어도 수백 프레임이 나오리라 생각합니다. 그렇지만 요즘은 그러한 H/W에서 더 화려하고 많은 개체를 찍기 위해서 노력하고 있습니다. 몇몇 데모같은데서는 굳이 lod나 컬링등이 필요 없겠지만 다른 사람들보다 뛰어나거나 최소한 비슷한 수준의 그래픽을 구현하기 위해서는 예전에 사용하던 속도 향상 기법은 대부분 그대로 사용해야 합니다.
teze
Posts: 90
Joined: 2002-08-06 14:31
Location: dev3d.net
Contact:

Re: gpu와 cpu ...

Post by teze »

비회원 wrote:요즘은 gpu가 cpu보다 월등히 속도가 빨라짐에 따라
쿼드트리, lod, 퓨러스텀 컬링 등이 오히려 불필요 해졌다고 하던데요 ...
컬링하는것이 오히려 렌더링 속도가 나오지 않는다고도 하던데요 ...
그리고 lod 쓰나 안쓰나 속도에 별반 차이 나지 않는다고도 하고 ...
그럼 3D 프로그래머는 무엇을 해야 하나요 ... ??
여러분의 생각은 어떤가요 ... ??
사실 CPU와 GPU는 개념적으로나 구조적으로 다른 물건이기 때문에 성능비교를 한다는것 자체가 불가능합니

다만, 제생각에 연산능력으로 봤을때는 GPU가 아직 빠르지는 않을것입니다. 단순히 시간당 처리할수 있는

오퍼레이션 명령어의 갯수를 생각한다면 CPU가 훨 더 빠르지 않을까 싶습니다. 즉 프로세서의 개념에서는

CPU가 훨씬 빠르겠졈. 단순히 코어 클럭 비교만해도..GeForce7800GTX는 430Mhz고 요새 왠만한 CPU는 3Ghz

정도니깐염..어디까지나 그냥 하드웨어 단순 비교입니다..^^..즉 코어클럭과 초당 실행가능 명령어갯수상의

비교졈..

물어보신게 사실 최적화 문제의 이야기라서 절대 단순하게 이야기 할수가 없습니다만, 사실 요는..

지금 시대는 CPU와 GPU라는 두개의 프로세서를 사용할 수 있다입니다. 따라서 어떤 기법을 쓰고 안쓰고의

문제라기보다는 두개의 프로세서에 적절한 부하를 주자는게 핵심입니다. 즉 한쪽으로 쏠리지 않도록

프로그래밍을 잘 짜주어야 한다는 것이졈.

사실 그래서 종전보다 훨씬 일이 복잡해졌습니다. 즉 무언가 기법이나 알고리즘을 쓸때 현재 어느쪽에 조금더

부하가 걸려있냐를 고려해야하는거졈.. CPU에 조금더 부하를 줄것이냐 GPU에 조금더 부하를 줄것이냐를

함께 결정해야 한다는 거졈..그래서 사실은 3D프로그래머가 더 할일이 많아졌습니다. 새로 익히시는분들도

이제는 이런 환경적 요소를 고려하는 방법도 배우셔야 겠졈..^^
난 언제나 겨우 점을 찍고 있을 뿐이다.. blowing Kaze...by teze
My Blogger : http://teze.egloos.com
zupet
Posts: 2764
Joined: 2003-05-13 03:34
Location: NCSOFT LE팀

Re: gpu와 cpu ...

Post by zupet »

teze wrote:사실 CPU와 GPU는 개념적으로나 구조적으로 다른 물건이기 때문에 성능비교를 한다는것 자체가 불가능합니

다만, 제생각에 연산능력으로 봤을때는 GPU가 아직 빠르지는 않을것입니다. 단순히 시간당 처리할수 있는

오퍼레이션 명령어의 갯수를 생각한다면 CPU가 훨 더 빠르지 않을까 싶습니다. 즉 프로세서의 개념에서는

CPU가 훨씬 빠르겠졈. 단순히 코어 클럭 비교만해도..GeForce7800GTX는 430Mhz고 요새 왠만한 CPU는 3Ghz

정도니깐염..어디까지나 그냥 하드웨어 단순 비교입니다..^^..즉 코어클럭과 초당 실행가능 명령어갯수상의

비교졈..
이 부분은 teze님이 조금 수정해 주셔야 할 것 같네요. 요즘 자주 쓰이는 용어중 CPU의 IPC 라는 말이 있는데 이것은 instructions per cycle 을 뜻하고 간단히 클럭당 명령어 처리 개수를 뜻하죠. 인터넷을 뒤져보니 NetBurst 아키텍쳐나 AMD64 아키텍쳐는 여러가지 상황에 따라 변하지만 평균 IPC가 2를 넘지 못하고 1 전후를 전전하고 있습니다. 간단히 말하면 3Ghz는 3GIPS 정도의 성능을 낸다는 거죠.

그에 반해서 그래픽 카드의 경우는 CPU의 코어가 1개 또는 2개인데 반해서 Vertex Shader 와 Pixel Shader 가 각각 따로 작동하면서 코어를 2개~24개까지 갖고 있습니다. 가령 7800GTX의 경우 Vertex Shader가 6개에 Pixel Shader가 24개로 알고 있는데 이것들이 모두 병렬로 작동하고 있고 430Mhz의 속도를 갖고 대부분의 명령들이 매 클럭당 하나의 명령을 수행하게 되어 있습니다.

만약 7800GTX를 상당히 잘 다루어서 모든 파이프라인이 절반정도 바쁘게 일을 하게 만들어서 0.5 IPC 를 내게 만든다면 (6 + 24) * 0.430(Clock) * 0.5(IPC) = 6.45 GIPS 가 나오게 됩니다. 대부분의 최신 게임들은 Pixel Shader를 많이 괴롭히고자 노력하고 있고 이럴 경우 Vertex Shader 쪽의 효율은 떨어지겠지만 Pixel Shader의 효율은 0.5 보다 조금 더 올라가리라 생각됩니다.

7800은 이번에 클럭을 낮췄지만 IPC 라는 개념에선 효율이 더 늘어났고 Multiply and Add 같은 명령도 한클럭에 처리할 수 있게 변하였습니다. 사실 지금 그래픽 카드의 병목은 메모리쪽 문제와 우리가 게임에서 사용하는 3D에 적합한 파이프라인을 무조건 늘려서 효율성을 높이기 어렵다는 점, 그리고 뭣보다 반도체 크기가 늘어나고 발열 및 전력 소모량이 너무 늘어나서 그래픽 카드 두개를 꼽으려면 500W급 파워를 써야 한다는 점이죠.

앞으로 좋아 지겠지만 최근 H/W를 활용한 리얼타임 3D가 또 요상~~한 분야로 흐르기 때문에 어떻게 될지 잘 모르겠습니다. 앞으로 폴리건은 더 늘어나지 않고 몇가지 쉐이더를 괴롭히는 방법으로 퀄리티가 급속히 늘어나리라 생각되는데 당분간은 부족한 툴과 최신 기술 도입에 대한 과도한 투자로 많은 개발자들이 고생하리라 생각중이군요.

p.s.위에선 7800GTX를 저렇게 계산 했지만 소니식으로 계산하면 저기에 그냥 '수백배'정도 곱해주면 됩니다. 소니는 FOPS (Float Operations Per Second)를 쓴데다가.. 제어 불가능하고 동시에 작동할 수 없는 '반도체상의 속도'만 계산했었으니까요.

p.s.2.GPU가 빠르다고 뭐든 GPU에 맡길 수 있는 것은 아닙니다. teze 님이 언급 하셨듯이 CPU와 GPU는 성격이 다르고 용도가 무척 다릅니다. GPU에서 다양한 작업을 하려고 시도중이지만 그것은 어디까지나 기술적인 도전이지 항상 적용이 가능한 것은 아닙니다.
teze
Posts: 90
Joined: 2002-08-06 14:31
Location: dev3d.net
Contact:

설명의 이해를 돕기위한 간단한 예였을뿐인데..^^

Post by teze »

위에도 언급했지만 단순한 비교입니다. 상세한 비교를 할생각은 없었습니다..^^.. 단지 두개의 프로세서의 성격

이나 구조는 매우 상이하기에 어느쪽이 더 빠르니 느리니 하는 비교는 의미가 없다는걸 쉽게 이야기할려고

대략적인 비교를 한것 뿐이졈.. 가벼운 질문에는 가볍게 대답해 주려고 한것 뿐입니다.. 사실 많은 분들이 단지

GPU가 빠르다고 알고 계신점에 대해서는 조금 정정을 해드리고 싶었구염.. 갠적으로 zupet님의 의견도 병렬

프로세서를 다수 달고 있는 GPU가 조금더 빠르다는 이야기시지만.. 실제적으로 30개의 프로세서를 병렬로 돌

리는 것을 단순히 더하기나 곱하기로 표현하는 것은 사실 하드웨어사의 부풀리기에 가깝긴 합니다. 두 프로세서

에서 단순한 수치적 비교는 사실 의미는 없다고 생각합니다...^^...

그리고 사실 제가 GeForce7800을 예로 들긴 했지만 현재 3기가 CPU와 비슷한 가격대에 시장에서 가장 대세인

GPU는 6600계열입니다. 현재 가장 가격대비 성능이 좋아서 많이 나가는 모델 두개를 비교하자면 zupet님의

비교대로 해도 CPU는 3GIPS고 GeForce6600은 버텍스 쉐이더가 4개정도 픽셀세이더가 8개정도인걸로 들었

습니다. 정확히 기억은 안나지만 비슷한 수치였고 현재 가장 높은 클럭의 6600GT의 클럭은 550Mhz정도인걸

로 알고 있으니.. 계산하면 12*0.550*0.5 = 3.3GIPS정도가 됩니다. 대략 현재는 비슷해진 수준이라고 생각

하는게 맞을지도 모르겠습니다. 앞으로는 CPU도 실제적인 병렬코어형태나 듀얼로 가는게 일반적이다라고하면

실제적으로 거의 비슷하게 가는게 맞는거 같습니다. 그리고 사족으로 제가 그래도 CPU가 더 앞선다고 생각하는

건 다수의 병렬프로세서를 돌리는 것은 하나의 싱글 프로세서보다는 확실히 평균적으로 수치가 훨 낮은게 일반

적이기 때문입니다. 그리고 우리가 생각하는 아주 일반적인 프로그램을 돌리는 경우라면, 즉 GPU에서도 제너릭

프로그램을 돌린다고 생각하면(이런 시도는 종종 하고 있져) 실제적으로 CPU가 훨씬 빠를수 밖에 없는 구조를

가지고 있다고 생각합니다..^^..

zupet님은 진짜 인터넷 Bot이 아니신지 의구심.. 이 늦은시각의 글에 리플을..^^..항상 넓은 식견에는 감탄하고

있습니다..^^
Last edited by teze on 2005-08-27 04:41, edited 4 times in total.
난 언제나 겨우 점을 찍고 있을 뿐이다.. blowing Kaze...by teze
My Blogger : http://teze.egloos.com
비회원

.

Post by 비회원 »

zupet님 머리에는 랜선이...꼽...
(도망가자~ =3=3=3)
비회원

Re: .

Post by 비회원 »

비회원 wrote:zupet님 머리에는 랜선이...꼽...
(도망가자~ =3=3=3)
사실.. 공각기동대에 나오는 그런 전뇌(電腦) 장비가 나온다면 정말 심각히 고민 할지도 모르겠습니다. ^_^
myevan
Posts: 1314
Joined: 2003-03-04 10:21
Contact:

Post by myevan »

3d 프로그래밍 한다라는건 컬링하는 방법을 배운다라고도 할 수 있는데 -_-)~
컬링한 만큼 여분으로 더 찍을 수 있는게 3d입니다. (이건 진리;; )

MMO 게임으로보면 주변에 이야기하신 분이 다소 특이하다고 생각될 수 있습니다만;
8명정도 한정된 공간에서 나오는 게임을 전제로 해서 이야기한거라면 맞는 말일 수도 있습니다.

ps. 말이란게 상황에 따라 맞을 수도 있고, 틀릴 수도 있는거라서 ~(-_-)~
빗자루네 http://www.myevan.net >_<b
남병찬
Posts: 102
Joined: 2002-10-09 13:23

Post by 남병찬 »

개인적인 생각으로 만년이 지나도 컬링의 필요성은 있을꺼 같네요..ㅎㅎ
chadr
Posts: 980
Joined: 2003-06-01 12:28
Location: 모대학
Contact:

Post by chadr »

초당 무한개 폴리곤 렌더링!
초당 무한개의 픽셀 처리 가능 하드웨어!
초당 무한개의 명령을 실행할수 있는 CPU!

가 아니면 컬링의 필요성은 충분이 있습니다..
hardcoder
Posts: 119
Joined: 2005-07-28 10:46
Location: 떠돌이
Contact:

컬링과 속도

Post by hardcoder »

아무리 GPU가 빨라져도 렌더링 하지 않는것이 렌더링 하는것보다 빠릅니다.
다만 그래픽카드의 특성과 컬링의 효율성을 잘 고려 해야 하는데요.


그래픽카드의 특성적인 예로...
컬링없이 무조건 렌더링 한다 칠때...
폴리곤 10개 짜리 오브젝트 1000개를 렌더링 하는것보다
폴리곤 1000개 짜리 오브젝트를 10개 렌더링 하는것이 더 빠릅니다.

차라리 폴리곤 10개 짜리 오브젝트를 100개의 오브젝트씩 1개로 묶어서
10번 렌더링 하는것이 더 빨라 지겠죠.



또 컬링 측면에서 극단적인 예로...
단순 삼각형 폴리곤 1개를 화면에 찍을때마다 CPU한테 컬링 계산을 시킨다면
컬링 안시키는게 더 빠르겠죠.


결국 한번의 컬링계산&렌더링호출때의 폴리곤의 규모를 잘 잡는것이 중요합니다.
그렇게 되면 엔진의 성능도 중요하겠지만 배경그래픽 오브젝트 리소스의 폴리곤을
어떤식으로 배분하여 제작하느냐도 상당히 중요해집니다.
비회원

Post by 비회원 »

>요즘은 gpu가 cpu보다 월등히 속도가 빨라짐에 따라
>쿼드트리, lod, 퓨러스텀 컬링 등이 오히려 불필요 해졌다고 하던데요 ...
>컬링하는것이 오히려 렌더링 속도가 나오지 않는다고도 하던데요 ...
>그리고 lod 쓰나 안쓰나 속도에 별반 차이 나지 않는다고도 하고 ...

LOD 의 경우는 CLOD 라는 가정하에 위 말이 맞습니다.

컬링은 한 100 년 후쯤 까지는 꼭 써야 성능이 나올거 같네요

쿼드트리로 시야컬링 하는 경우
컬링 하는데 드는 비용은 불과 몇 미리 세컨드 라고 보시면 되니까요

100미터*100미터를 그려주는 거와 1킬로*1킬로를 그리는 것은 당연 카드 상관없이
전자가 빠르겠죠

SLOD 의 경우는 아무리 카드가 좋아도 폴리곤 만개 찍는게 10만개 찍는거 보다는 빠르죠
SLOD 는 미리 폴리곤 줄여놓은 것을 단순히 그리는 것이므로 당연히 카드 상관없이 빠르죠

CLOD 는 실시간으로 줄이기때문에 지포스 2 부터 이미 성능이 LOD 없는 쪽이 더 빠른 것으로
검증이 되었죠

쿼드트리 LOD 도 CLOD 와 SLOD 가 있습니다.
SLOD 라면 아무리 수퍼 할아버지 카드가 나와도
카드 상관없이 무조건 SLOD 해주는게 빠릅니다.

그리고 주의 하실 점은 카드가 아무리 7800 이상이 보편화 되어도
그 카드에서 수용하는 그래픽 양 이 점점 커지기 때문에 계속 옵티마이즈는
더더욱이 커지기 마련이지 줄어들지는 않습니다.

요즘 노말맵으로 캐릭터 몇개만 그려도 프렘 뚝 떨어지는데
하물며 전 맵과 캐릭터 들을 노말맵으로 덮고 더구나 효과까지 노말맵으로
처리를 해버린다면 현재 좋은 카드들은 현재 그래픽 데이타로 본다면 허접한 카드라고 볼 수 있습니다.
Locked