가장 느린 수퍼 파이(Super PI) 실행 값은?

수퍼 파이(Super PI)라는 프로그램은 아마 오버클럭 하는 분에게는 매우 익숙한 프로그램일 것이다. 오버클럭을 하고 나서 매우 간단하게 성능 및 안정성을 체크하는데 사용된다. 이름에서 말하듯이 원주율 파이 값을 계산 해주는 프로그램. 지금 내 컴퓨터에서 방금 돌려본 값은 아래 그림과 같다. 관심이 있는 분은 다운 받아 바로 돌려봐도 된다(super_pi_mod.zip). 리눅스 용도 여기서 다운 받으면 된다.

컴퓨터는 샌디 브릿지 2600K를 4.5GHz로 오버클럭 한 상태이다. 수퍼 파이의 1M 값, 즉 원주율을 소숫점 2^20(=약 1백만) 자리까지 구하는 계산인데, 보다시피 8.47초 정도 걸린다. 저 수치는 다른 프로그램이 떠 있는 상태에서 측정한 것이고 다른 영향을 최소화하면 8.2초까지 떨어진다. 최근 AMD가 내놓은 불도저(FX-8150)의 수퍼 파이 값이 무려 20초에 육박한다는 사실을 보면 이 10초 미만의 수치는 엄청 빠른 편이다. 만약 오버클럭을 하지 않은 2600K라면 10초 근처가 나온다.

내가 아마 처음으로 돌려본 수퍼 파이가 2003년 여름에 샀던 펜티엄 4 2.4c라는 CPU인데, 여기서 봤던 수치가 약 50초로 기억한다. 여기서 오버클럭을 해서 3GHz까지 올려야 40초대 중반을 보았던 것으로 기억한다. 1세대 Core i7, 즉 Nehalem 구조에서 10초 이하를 보려면 굉장히 힘든 오버클럭을 해야 했는데, 이제는 (물론 아주 쉽지는 않지만) 비교적 간단하게, 게다가 전력도 많이 먹지 않으면서도, 8초대라는 엄청난 수치가 가능해졌다. 간단하게 지금 검색해보니 2600K로 5GHz까지 오버클럭을 하면 7.4초 정도가 된다고 한다. 4.5GHz에서 8.2초니까 5GHz에는 단순히 비례로 하더라도 7.4초가 나온다. 즉, 수퍼 파이는 클럭을 높이면 성능이 비례하는 셈.

그렇다면 세계 최고 기록은 얼마나 될까? Core i7 Extreme 980X를 무려 6930MHz로 오버클럭한 컴퓨터에서 얻은 5.781초(링크)라고 한다. 아마 당연히 쿨링은 액체 질소를 이용했을 것이다.

 

수퍼 파이 프로그램이 도대체 어떤 부분을 테스트할 수 있는지 간단히 프로파일링으로 알아보자. 먼저, 수퍼 파이 프로그램은 싱글 스레드 프로그램이다. 그러니 수퍼 파이 하나만 가지고는 싱글 스레드 성능만을 제대로 측정할 수 있다. 참고로 AMD의 불도저가 수퍼 파이 점수가 상당히 낮은데, 예전 글에서도 썼지만 불도저는 싱글 스레드 성능은 솔직히 큰 기대를 하지 않고 반대로 멀티 스레드 성능에 집중하였기 때문에 어느 정도 이해는 할 수 있다. (그래도 20초는 너무…)

수퍼 파이 프로그램을 Pin이라는 인스트루멘테이션(instrumentation) 툴을 이용해서 1M 파이 계산 시 어떤 종류의 x86 명령어가 실행되는지 그 통계 값을 얻어 보았다.

총 실행된 명령어 개수는 8.47초 동안에 430억 개. 즉, 초당 약 50억 개. 이 CPU가 4.5GHz이니까 대략 계산되는 IPC(Instruction Per Cycle)은 1.12 정도가 나온다. (샌디 브릿지는 파이프라인이 4개 있으니 많으면 매우 이상적이라면 3-4까지도 나올 수 있다.) 정확한 IPC 또는 CPI 값은 VTune 같은 프로파일러나 하드웨어 퍼포먼스 카운터로 측정이 가능하나 지금 이 컴퓨터에 깔려있지가 않아서 생략했음.

가장 많은 비율을 차지한 연산은 x86 MOV 연산이다. 참고로 MOV는 메모리에서 레지스터로 값을 읽는 로드(load)와 반대로 연산 결과 값을 메모리에 쓰는 스토어(store) 작업이 모두 포함되어 있으므로 이것만 가지고 메모리 읽기/쓰기 비율을 바로 알 수 있지는 않다. MOV 뒤로 각종 부동 소숫점 연산이 뒤따른다. 자명하지만 이 수퍼 파이 연산은 부동 소숫점 연산이 많을 것이므로 예측 가능한 결과이다. 정수 덧셈(ADD)은 2.72%로 그 비율이 낮은 편. 대부분은 아마 메모리 주소 값을 계산하는데 쓰였을 것이다. 여기서 확실히 알 수 있는 수퍼 파이의 특징은 이 프로그램은 부동 소숫점 연산이 매우 많은 프로그램이라는 것.

x86의 ADD, FADD에는 피연산자로 레지스터 외에 메모리도 올 수 있으므로 MOV 비율만으로는 부족하므로 다시 한번 메모리 읽기/쓰기 비율을 조사할 필요가 있다. 그 결과는 아래와 같다.

8바이트를 읽고 쓰는 비율이 적지 않으므로 역시 float 보다는 double을 썼음을 알 수 있고, 메모리 읽기/쓰기의 총 합이 80%에 달하는 것으로 보아 이 프로그램은 캐시/메모리 성능에도 영향을 많이 받을 것으로 예측할 수 있다. 그러나 이건 싱글 스레드 프로그램이고 데이터의 이동량 자체가 많은 것은 아니므로 요즘 컴퓨터에서 메모리 대역폭에 의해 성능이 저하되는 일은 없을 것이다. 1M 계산 시에는 메모리를 10MB 정도만 쓰며, 최대 계산인 32M까지 구하는 계산을 하더라도 273MB로 요즘 컴퓨터에서는 별 부담 없는 메모리 사용률을 보이기 때문이다. L3 캐시 미스 비율(=DRAM 접근 횟수)까지는 측정 해보지는 않았지만, 대략 이러한 정보를 종합하면 결국 클럭과 싱글 스레드 처리 능력이 수퍼 파이의 결과를 좌우 한다고 볼 수 있다.

 

수퍼 파이 값은 항상 어느 컴퓨터가 ‘빠른가’에 관심이 있는데, 그렇다면 가장 느린 수퍼 파이 값은 얼마나 될까? 이 단순한 호기심을 풀려고 인터넷 검색을 해보았다. 일단 수퍼 파이는 윈도우/리눅스에서 돌아가는 프로그램이니까 현실적으로 이 운영체제를 돌릴 수 있는 컴퓨터 중 가장 오래된 녀석을 찾아야 할 것이다. 안타깝게도 찾을 결과는 한 글 타래 밖에 없었다. 여기서 두 개의 결과가 눈에 띄는데..

(1) Intel 486 SX 33MHz, 45MB RAM, 203MB HDD, 코프로세서 없음(!!!, 즉 부동소숫점 처리가 모두 에뮬레이션으로 처리됨!) 여기서 데비안 (커널 2.2.20)을 올리고 수퍼 파이 1MB가 아니라 16K를 돌리니 6691.190초가 걸렸다고 한다. 거의 두 시간이 걸리는 결과인데, 내 컴퓨터에서 16K 연산 값은 0.095초. 이 두 값의 차이는 무려 70,433배. 80486 CPU가 1989년에 나왔으니 22년의 세월 동안 싱글 스레드 성능이 이렇게 엄청난 발전이 있었음을 알 수 있다.

(2) 역시 486SX 33MHz (역시 코프로세서 없음), 20MB 램에서는 1M 값이 46시간 56분 6초 = 168,966초가 걸렸다고 한다. 내 컴퓨터의 값 8.47초와 비교하면 19,948배에 해당하는 값!


내가 궁금한 것: 안드로이드나 아이폰에서 수퍼 파이 결과 값은 얼마나 될까요? 저도 모릅니다;;

by 김민장 | 2011/10/26 09:23 | 컴퓨터 | 트랙백 | 덧글(23)
트랙백 주소 : http://minjang.egloos.com/tb/2865652
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by BigTrain at 2011/10/26 09:48
불도저가 느리다 느리다 그러더니 정말 느리네요. 동세대 라이벌보다 두 배 이상 느리니..

486SX에 데비안이 올라간다는 사실도 대단합니다. 저게 대체 언제적 PC야 ㄷㄷ
Commented by Ya펭귄 at 2011/10/26 10:38
ARM7 720계열에조차도 리눅스가 올라가는데 별 문제가 없었다는(물론 속도 빼고) 점을 감안한다면 사실 그다지 대단한 것도 아닙니다...
Commented by 김민장 at 2011/10/26 10:43
386 이후부터는 protected mode가 되고 모던한 32비트 x86 CPU의 체계가 갖추어져서 486에서 윈도우나 리눅스가 올라가는 건 사실 놀랄만한 일은 아닙니다. 윈도우 95가 나올 당시에도 486은 많았으니깐요. 그리고 불도저는.. 음... 가격으로 승부해야 살아남을 것 같음;;
Commented by loveiris at 2011/10/26 15:57
93년도쯤 나왔을걸요. ㅎㅎ 그땐 정말 애지중지 썼는데ㅋㅋ
Commented by RuBisCO at 2011/10/26 10:03
비아 C7 1Ghz짜리로 20분 넘긴거로 오지게 느리다고 했는게 이건 대체ㄷㄷㄷㄷㄷ
Commented by 김민장 at 2011/10/26 10:42
일단 부동소숫점 처리기가 있고 없고 때문에 한 천배 날듯 ㅋㅋ
Commented by sdf at 2011/10/26 10:19
매스메티카로 하는 벤치마킹도 잇죠. ㅋㅋ 저희집에 윈98컴이 현역입니다. 펜3ㅋㅋ
Commented by Ben at 2011/10/26 10:32
2.4c가 40초대나 나왔다는 것이 486 SX보다 더 놀랍습니다. 훨씬 오래 걸릴 거라 생각했는데, 대단하네요. 이런거 보면 담부턴 그냥 5만원짜리 CPU나 사서 써야겠다 생각도 듭니다.
Commented by 김민장 at 2011/10/26 10:40
2.4c가 오버 클럭 열풍을 불러일으켰죠. 40초에서 10초로 내려오는데 거의 5-6년이 걸렸죠. 아시다시피 그래서 에불바디 멀티코어.
Commented by Ya펭귄 at 2011/10/26 10:37
음...... SSE 시대에 x87명령어 위주의 계산이 주종이군요 슈퍼파이는..........

인텔이 고전적 x87 명령어에서도 엠뒤를 철저하게 발라버리는.....
Commented by 김민장 at 2011/10/26 10:41
1995년에 만들어진 코드니. ㅋㅋ
Commented by Lyn at 2011/10/26 11:33
SSE4 지원 파이프로그램 만들어서 함 해보면 재밋겟군요.
Commented by Lyn at 2011/10/26 12:00
불도저의 아키텍쳐가 싱글쓰래드 성능 희생한만큼 전체아웃풋이 좋다면 서버시장에선 각광일수도 있으려나 ...
Commented by RuBisCO at 2011/10/26 12:17
불행히도 멀티쓰레드에서 최대한의 성능을 우겨낸게 간신히 일반사용자용의 샌디브릿지와 비등하고, 그 위에는 샌다브릿지E가 넘사벽을 ㄷㄷㄷㄷ
Commented by Ya펭귄 at 2011/10/26 13:15
KIN도저의 8코어보다 샌디 i7 2600의 HT작동상태에서의 8쓰레드 오퍼레이션이 동등 혹은 그 이상이더라는.....
Commented by 김민장 at 2011/10/26 18:02
불도저가 새로운 구조라 기대를 했는데 일단 숫자가 안 좋게 나오네요;; 아무리 OS단에서 스케줄링 최적화 여지가 남아있다고 하지만..
Commented by Lyn at 2011/10/26 15:21
그 그렇군요 ;;;;

불도저는 저가형을 노려야되나 =_=;;;
Commented by 나타라시밤 at 2011/10/26 16:53
코어 i7 블룸필드 930 2.8Ghz 노오버로 돌려보니 약 13.54초가 나오네요.

불도저는 샌디는 커녕 퇴역을 앞둔 블룸옹과 경쟁하기도 버거운 것인가요 컥컥컥컥
Commented by 김민장 at 2011/10/26 18:02
저도 920을 썼었는데 노오버로 14초 정도 나왔죠. 10초는 사실 엄청난 수치이죠!
Commented by SY Kim at 2011/10/27 16:48
i5 2500도 11초근방에서 어기적 거리는군요. 모니터를 띄우고 보니 코어 1개도 100%를 못쓰는것 같더군요. 이에 비하면 불도저는 정말 느린 편이네요.
Commented by 김민장 at 2011/10/28 18:08
불도저가 왜 저렇게 느린지 이해가 안 갈 정도이네요. 초반에는 캐시/메모리 쪽에 성능 버그가 있어서 그랬다고 하던데.. 스테핑이 개선되면서 고쳐질 수 있는 문제인지 모르겠군요.
Commented by DJ™ at 2011/10/29 17:03
슈퍼파이라는 프로그램이 나온지가 16년은 족히 됐기에 FPU 사용량이 많은건 당연한 것입니다. arbitrary-precision을 사용하는 프로그램들은 필연적으로 빠른 곱셈을 위해 FFT를 사용하기 때문에 저리도 부동소수점 연산이 많은 것이죠.

여담이지만 슈퍼파이에 사용된 Gauss-Legendre 알고리즘은 요즘와선 그리 좋은 알고리즘이 아닙니다. 최소 매쓰메티카나 현대에 나오는 벤치마킹 프로그램들은 Chudnovsky 형제의 알고리즘을 쓰며, 심지어는 FFT를 위해 SSE 및 AVX까지 적극적으로 사용함으로써 연산시간을 극적으로 단축 시키고 있죠.

대표적인 놈으로 y-cruncher를 추천합니다.
Commented by conix at 2011/10/31 20:13
http://www.parkoz.com/zboard/view.php?id=over_freeboard&page=1&sn1=&divpage=4&sn=on&ss=off&sc=off&keyword=%B1%E8%BD%C2%BF%F8&select_arrange=headnum&desc=asc&no=15282

놋북에서 돌려보니 43초 정도가 나오네요(1M기준)

문제는 이놈이 ULV(초저전압) 모바일 CPU 라는건데..

펜린세대 1.2기가 듀얼밖에 안되는놈이 싱글쓰레드 성능이 펜티엄4 2.4c이상아리니 놀랍습니다..

:         :

:

비공개 덧글

<< 이전 페이지 다음 페이지 >>





by 김민장 2008 이글루스 TOP 100
최근 등록된 덧글
워드의 docx, 파워포인트..
by 나인테일 at 05/19
쓸 때마다, '차라리 이런 게..
by Raymundo at 05/18
LaTeX 쓰면서 ”.toc나 *..
by 아라크넹 at 05/18
지금 회사 전산팀에 있을대 ..
by 김아람 at 05/18
TeXworks, TeXstudio ..
by 김민장 at 05/18
LyX가 위지위그 스타일이라..
by 김민장 at 05/18
LyX는 어떤가요? 요즘 공..
by 길가던 공대생 at 05/18
얼마전에 KTUG에서 ko.t..
by 死海文書 at 05/17
최근 등록된 트랙백
visual studio 최적화 옵션
by Joygram's snippet
모든 건 일장 일단
by 幻想鄕.flamboyance
메뉴릿
이글루 파인더

website counter

Add to Google

rss

skin by 이글루스