유수 벤치마크 사이트들에서 SuperPI는 PC의 성능을 가늠하기 위한 벤치마크 도구로서 사용되고 있다. 특히 1M 자리수의 PI계산 속도는 CPU의 FPU 성능의 가늠자처럼 인식되고 있는데, 필자는 SuperPI는 이같은 역할을 수행하기엔 시대에 뒤떨어진것이 아닌가 생각한다.

그 이유로는,

- SuperPI(mod버전포함)는 Single-threaded Application으로서 대세인 다중코어 CPU의 성능을 100% 사용하지 못한다.
- 오픈소스가 아니라서 변화하는 환경에 따른 적용이 불가능하다.

일례로 필자가 새로 장만한 AMD64 4000+와 AMD64 X2 3800+로 SuperPI 1M 처리 속도를 비교해보면,4000+가 10초가까이 빠른 속도를 나타냈다. 이 같은 문제는 멀티코어나 비대칭벡터프로세서의 정확한 성능을 가늠할 수 없을뿐만아니라, 유저들이 잘못된 성능 비교를 보고 혼동하게 만들 수 있다.

MacResearch에 올라온 플스3와 맥과 인텔을 비교해놓은 PI 벤치마크. 저자는 Cell의 SPE를 사용하지 않았다는 것을 명시하고 있지만, 이러한 벤치마크는 낚시제목과 함께 여러 사이트들를 돌면서 유저들을 혼동시킨다. (제발 퍼가지 마세요.)

필자가 생각하는 새로운 SuperPI는,

- 오픈소스
- 병렬/직렬처리를 병행할 수 있는 알고리즘
- 메모리 용량에 최대한 독립적
- 확장명령어셋지원(SSE,SSE2,SSE3,3D NOW!, ...) 및 옵션으로 on/off가능
- GPGPU(General Purpose GPU) 혹은 CUDA 지원으로 CPU와 GPU의 비대칭 병렬처리 옵션
- 플랫폼 독립적으로 Windows, Linux등에서 구동가능
- Cell Broadband Engine(PS3)의 PPE/SPE 비대칭 프로세싱 지원

정도로 SuperPI처럼 PI 값의 정확성보다는 시스템의 활용 측면을 더 바라봐야한다는 생각이다.
병렬처리로 PI를 구하는 대표적인 알고리즘은 Monte Carlo Method지만 기타 다른 알고리즘도 고려해볼 만하다. 특히 다중코어의 Multi-threading이나 비대칭코어의 Multi-passing이나GPU의 고속 행렬연산 pipe를 잘 응용한다면 서로 다른 아키텍쳐의 성능을 비교해 볼 수 있는 벤치마크 프로그램이자 참고용소스로서 가치가 있지 않을까 싶다.

Project PI (오픈소스 PI 프로젝트) 사이트 바로가기

Monte Carlo Methods in Parallel Computing 사이트 바로가기

PI 생성 알고리즘의 Single-threaded Multi-threaded 비교 예제

FFT와 AGM(Monte Carlo) 이용한 PI 계산 사이트 바로가기
AND

잠잠하던 PS3 판매정보에 CC가 처음으로 불을 붙혔다. 발매일 17일 하루전인 16일 9시부터 지정된 6개 매장에서 이벤트를 시작하여, 10시에 줄을 선 고객중 상위 100명에게 판매확정 Voucher를 주고, 자정(17일 0시)에 100대를 판매한다. 하필이면 6개 매장 중 한 곳이 우리집 옆에 있을 줄이야;;; 16일이면 평일인데, 줄을 서서 사볼까하는 고민이...(becasue, PS3예판 Voucher는 Ebay에서 현재 2,400불에 거래된다.)

사이트 바로가기

AND

얼마전에 Newegg에서 단돈 4.99불에 팔았던 사이드와인더 프리스타일 프로. 싼마이에 덥썩 2개나 사 버렸다. M$가 PS3의 컨트롤러를 향한 푸념중에 이 제품에 대한 기억을 되살리는 부분도 있었기에, 어느정도 성능이었는지 매우 궁금했었다.

첫 느낌은 묵직한 그립감에 나쁘지 않은 느낌이다. 미국판 새턴패드 이후로 미국식 패드 애호가가 된 내가 좋아하는 감촉이다. PS3와 유사한 Angular Sensing 모드는 Sensor라는 버튼을 누르면 작동하게 되어 있는데, 아쉬운 것은 디지털패드와 병행할 수가 없다. 둘중 하나의 값만은 전달한다.


Sensor버튼을 눌러서 모션센싱 모드에서 게임을 해본 결과 이 패드가 왜 망했나를 알 수 있었다.

- Maximum Angle에 대한 정의가 모호하다.
원점에서 기울이기 시작하면 H,V의 Delta 값이 바뀌기 시작하는데, 거의 70도까지 값이 일정하게 올라가다가 70도에서 90도사이는 찔끔찔금 올라간다. Calibration모드에서조차 최대값에 도달하기가 어렵다.
- 플레이어의 손은 기계가 아니다.
패드의 원점은 정확히 평행한 0도선이다. 하지만 플레이해본결과 0도의 위치는 자연스런 기본자세라기보다 약간 무리가 가는 자세라서, 나도 모르게 원점을 벗어나 오작동하는 경우가 많았다. 또한, 최대값의 경우도 인간의 손목으로 나올 수 있는 각도가 아니다;; Constraint을 좀더 작게 잡고 세밀한 움직임을 줬으면 어떘을까 하는 아쉬움이 생긴다.
- H,V 센서의 부정확성
H축에 수직으로 기울인 상태에서 V축 수직으로 이동해보면 값이 일직선을 그리지 못하고 계단의 형태를 띄는 것을 볼 수 있다. 수평/수직 2개의 센서의 정확도가 떨어져 나오는 결과로 보인다.
- 게임에서의 지원미비
Activison에서 제공한 PRO BMX게임의 경우 플레이가 불가능할 정도로 컨트롤이 어렵다. 이 패드는 앞으로만 전진하는 레이싱 게임이나 균형을 맞추는 게임에는 적합해도 앞뒤로 돌아다니며 재주를 부리는 게임에는 전혀 맞질 않는다.

동봉된 게임이 너무 재미없어서 현재 진행중인 게임 프로젝트의 일부에 적용해 보았는데, 반응이 괜찮다. 다만, 입력되는 값을 상대적 좌표로 써야만 느낌이 좋다. 사람마다 쥐는 자세는 다 틀리지만 화면에 피드백하여 움직이는 상대값은 대체로 비슷하였다. PS3의 6-Axis의 경우도 이같은 점을 주의하지 않으면 비슷한 결과가 나오지 싶다.
AND