Radiosity Baking 작업중

요새 하는 작업 버벅대고 있지만 어떻게 가야할지 대충 방향은 잡은 듯 하다. CUDA버젼 만들때가 좀 재밌었음. 실제 사용할만한 게임맵을 구우려면 시간이 엄청나게 걸릴 것 같은데 CUDA를 사용하면 대충 화질의 타협을 보고 한시간 안에는 구울 수 있지 않을까…라고 기대중. Directional Light한방 먹인 후… Radiosity OffRadiosity ON Radiosity ON

nVIdia 케플러 GK104의 CUDA성능은?

techpowerup.com 에 GK104의 다이어그램이 올라왔는데요. 약간 실망한 부분도 있고 해서 다이어그램에 대해서 제 생각을 좀 적어봤습니다. GK104(케플러)의 다이어그램(이미지 출처 http://www.techpower.com ) GF110(페르미)의 다이어그램 우선 techpowerup.com에 올라온 기사에 오자가 있는것 같습니다. SM이 16개로 나와있습니다. sm은 다이어그램상으로도 8개이고 8*192= 1536인데요. 16*192 = 3072니까 sm 개수는 8개가 맞는것 같습니다. 다이어그램으로 보면 그냥 딱 게임에 맞췄다고 보는것이 맞을것 같습니다. GPGPU는 아마도 … More nVIdia 케플러 GK104의 CUDA성능은?

CUDA충돌처리 응용#2

원래 충돌처리 엔진에 기본기능으로 만들어넣었던 반사를 사용했다. 로켓탄 튀어다님. 캐릭터에 맞아도 튀고 로켓끼리 부딪쳐도 튀고… 일단 서브로 꽂은 GTS450에서 CUDA를 돌리고 있는데 PCI-E 4x임에도 불구하고 CPU로 처리할때보다 적어도 2배 이상 빠르다. 당초 서버에서만 사용할 생각이었지만, 그래픽 카드를 두 개(물론 nVidia제품으로)꽂은 경우라면 확실히 성능 향상이 있으므로 클라이언트에 사용해도 좋을것 같다. 요새는 피직스용 nVidia그래픽 카드를 하나 더 … More CUDA충돌처리 응용#2

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 충돌처리 현재까지 진행상황

CUDA로 구현한 충돌처리

퇴사 이후 다음 직장 찾을때까지 만들기로 계획했던 물건이다. 예전에 프로젝트 엡실론에서 사용했던 충돌처리코드보다 상당히 개선했다. 다이나믹 개체들간의 충돌처리도 포함되어있다. 그때보다 속도도 빠르고 코드도 간단하다. 그리고 CUDA를 지원한다. 처음부터 CUDA를 염두해두고 만들었다. 멀티스레드 버젼은 만들지 않았고 CPU 싱글 스레드 버젼과 CUDA버젼만 만들었다. 일단은 CUDA버젼이 CPU버젼보다 10배정도 빨랐는데 타원체VS타원체 들어가면서 버스 병목이 생겨서 격차가 줄어들었다. 일단 돌아가는 … More CUDA로 구현한 충돌처리