CUDA 충돌처리 응용

지금까지의 코딩과 테스트는 여기 써먹기 위함이었다. 언젠가는 완성하고 말 내 개인 프로젝트. 하츠네미쿠의 모험..혹은 PSYCHO SEKAI 지금껏 만든 CUDA충돌처리 엔진은 클라이언트,서버 모두 사용 가능하고 클라이언트에 적용시켰다. 서버도 만들어서 테스트하면 좋겠지만 지금은 여력이 없어서 서버는 만들지 않았다. 서버에서 동일한 DLL을 로드해서 동일한 Frame Per Sec로 시뮬레이션 해주면 된다. 이벤트 받을때마다 캐릭터 상태 바꿔주면 되고. 대충 멀쩡히 … More CUDA 충돌처리 응용

CUDA충돌처리 현재까지의 결과 CPU vs GPU

우선 먼저 포스팅한 결과에는 꽤 오류가 있었다는 점을 말해두고 싶다. 가장 큰 문제는 CPU측과 GPU측 코드의 자료구조가 다르다는 점이다. 퍼포먼스 차이를 가장 많이 갈라놓은건 자료구조의 차이였다. CPU계산과 GPU계산을 실시간으로 전환하기 위해 코드를 수정했다. 그 결과 동일한 자료구조 동일한 상태 업데이트 코드를 가지게 되었고 결과는 상당히 달라졌다. 우선 코드가 어떻게 동작하는지 간단히 설명한다. 용어정리 : Host … More CUDA충돌처리 현재까지의 결과 CPU vs GPU

nVidia Visual Profiler 4.1로 돌린 결과

이놈의 충돌처리가 단순 연산만으로 작동하는게 아니고 케이스 바이 케이스로 처리할게 많아서 분기가 많다. 그러다보니 병렬화가 어렵다. 나름 죽도록 병렬화 했다고 생각하는데 실제 코드의 50%정도밖에 병렬화가 안되는것 같다. 코드 최적화는 할만큼 한거 같고 나머지는 GPU스펙에 달린듯. 이하는 NV Visual Profiler로 돌린 화면. 컴퓨팅 활용도 72.4%면 할만큼 했다고 생각한다. 매트릭스 연산이나 영상처리가 아닌지라 더 이상은 무리.

이번에 CUDA충돌처리 모듈을 만들면서 깨닫게 된 몇 가지들.

이번에 CUDA충돌처리 모듈을 만들면서 깨닫게 된 몇 가지들. 예전 프로젝트(프로젝트 엡실론)에서 멀티스레드와 SSE어셈을 떡을 쳐서 서버기반에서도 사용가능한 충돌처리 코드를 만들었었다. 세 번의 유져 테스트에도 무사히 작동했고 꽤 잘 만들었다고 생각했다. 근데 그 코드에는 중대한 결함이 있었다. 1. 기본적으로 계산 코드가 너무나 비효율적이었다..불필요하게 복잡하고 느리다. 난 수학에 자신이 없었고 그래서 다른 사람에게 코드 작성을 맡겼고 나중에 … More 이번에 CUDA충돌처리 모듈을 만들면서 깨닫게 된 몇 가지들.

CUDA 충돌처리 현재까지 진행상황

개인적으로 [CUDA를 이용한 충돌처리 엔진 프로젝트]를 시작한지 어언 두달 가까이 되었다. 현재까지 진행 상황을 간단히 적어본다. [목표] 1.MMORPG 게임 서버에서 사용할 수 있는 충돌처리 엔진을 구현한다. 2.대규모 처리를 위해서 CUDA를 사용한다. 3.캐릭터와 로켓런쳐 탄환 따위의 동적인 오브젝트는 타원체(가로세로 1:1이면 구)로, 게임맵은 삼각형집합으로 구현한다. 4. 타원테 VS 타원체 , 타원체 VS 삼각형의 충돌을 감지하고 탄성계수를 적용한 … More CUDA 충돌처리 현재까지 진행상황