듀얼 CPU 나 듀얼 코어 의 속도이득을 보려면 ..

프로그래밍 일반에 관한 포럼입니다.

운영자: 류광

Locked
비회원

듀얼 CPU 나 듀얼 코어 의 속도이득을 보려면 ..

전체글 글쓴이: 비회원 » 2006-12-08 12:50

3D 클라이언트 컴파일 할 때
7.1 .net 2003 으로 컴파일을 하는데요

이 경우 dual cpu 혹은 dual core 일 때
게임 실행시 속도 향상이 되나요 ?

%OS 는 윈도 프로페셔널 이라고 보구요. [ 운영체제 상으로 듀얼 지원함 ]
컴파일 속도 말고 게임 실행시 속도 향상이요.

만일 안된다면
어떻게 하면 지원이 될까요 ?

만일 된다면
싱글 CPU 보드 에 비해서 얼마나 향상 될까요 ?

비회원

쓰레드...

전체글 글쓴이: 비회원 » 2006-12-08 13:59

듀얼코어를 지원 하려면 쓰레드를 써서 프로그래밍 하셔야 합니다.

그리고 이론상으로 듀얼코어는 2배의 성능을 낼 수 있는데
실제로 병렬작업인 3D렌더링이나 동영상 인코딩 같은경우 90%이상의 성능 향상이 있죠.

하지만 게임 같은 경우는 이미 GPU가 계산량이 많은 작업은 대부분 처리해 주기 때문에
듀얼코어를 쓰더라도 성능을 대폭 끌어 올리기는 힘들껍니다.

대신에 남는 CPU자원을 더 활용하도록 물리엔진이나 AI등을 더 강화할 여유는 생기겠죠.

비회원

전체글 글쓴이: 비회원 » 2006-12-08 14:06

그렇다면 쓰레드 아니고 그냥 일반적 시리얼한 형태로 코딩을 하고
vc 2003 으로 컴파일을 할 경우는 효과가 거의 없다는 것으로 봐도 되는지요.

언듯 듣기로는
일반 프로그램도 듀얼 에서는 하드웨어적으로 싱글처럼 힘이 합쳐져서
거의 1.5 배 이상의 성능을 낸다느니 하는 소문을 들었거든요.

물론 제 엔진이 캐릭터 애니메이션 등은 GPU 에서 하기 때문에
CPU 를 많이 쓰지는 않겠지만 .. 그래도 CPU 도 성능에 일조를 하기때문에
질문 드린겁니다.

물론 가장 좋은 방법은 테스트 이겠지만요.
이론적으로 좀 안다음에 하는게 더 좋을 거 같아서요.

사용자 아바타
아노아
전체글: 296
가입일: 2002-02-08 09:00
사는 곳: 모 회사 청소과.
연락처:

전체글 글쓴이: 아노아 » 2006-12-08 14:15

일반 프로그램이라고 이야기하는게 여러가지 의미를 닮고 있는것 같습니다. 작업관리자에서 찍어보시면 아시겠지만. 저희가 명시적으로 쓰래드를 사용하도록 짜지않더라도 라이브러리등 내부에서 쓰래드를 쓰는경우가 많습니다. 게다가 시스템에서 쓰래드를 쓰는경우들이 많으니까요 듀얼쪽이 당연히 조금 더 성능향상이 있겠지요.

저희 프로젝트의 경우엔 클라이언트들은 동일하고 슈퍼피어(방장)는 독립적인 게임을 또하나 돌리게되는데.. 그 내부에서 AI등 여러가지 처리부가 많습니다. 이쪽부를 쓰래드로 따로 땔까 생각중입니다. :$

myevan
전체글: 1314
가입일: 2003-03-04 10:21
연락처:

전체글 글쓴이: myevan » 2006-12-08 15:15

게임에서 쓰레드 쓰기에 가장 좋은 부분은 스킨 애니메이션 부분입니다.
(독립적으로 작동 가능하죠; )

코드: 모두 선택

for (i = 0; i != 100; ++i)
    instances[i].skin();
위처럼 반복적인 코드가 있다면

코드: 모두 선택

void thread1()
{
    for (i = 0; i != 50; ++i)
        instances[i].skin();
    PostSkinComplete();
}

void thread2()
{    
    for (i = 51; i != 100; ++i)
        instances[i].skin();
    PostSkinComplete();
}

void skin_instances()
{
    if (CPU_NUM <= 1) // CPU 가 하나일때 쓰레드 쓰면 더 느려진다라는 소문들이 흉흉
    {
        thread1();
        thread2();
    }
    else
    {
        thread_start(thread1); // 당연하지만 쓰레드 풀을 사용한다고 가정합니다.
        thread_start(thread2);
        WaitForSkinComplete(); // 이건 출력 전에만 하면 됩니다...
    }
}
CPU가 두개라면 2배까지는 아니더라도 꽤나 빨라지겠죠 ~(-_-)~
맵찍을 동안 Skin 을 한다면 좀더 좋은 효과를 볼 수 있을 겁니다.
빗자루네 http://www.myevan.net >_<b

chadr
전체글: 980
가입일: 2003-06-01 12:28
사는 곳: 모대학
연락처:

전체글 글쓴이: chadr » 2006-12-08 16:27

위의 빗자루님께서 말씀하신것과 같이 스킨애니메이션과 같은 구조의 경우라면 위의 예제와 같이 구성을 하시면 좋을 것 같군요.

OpenMP라는것을 고려해보세요.. 위의 코드를 OpenMP에서는 자동으로 처리해줍니다.

Locked

접속 중인 사용자

이 포럼을 보고 있는 사용자: 회원 0 명, 손님 3 명