Cray-1과 Raspberry Pi 성능 비교
(roylongbottom.org.uk)- 1978년 슈퍼컴퓨터였던 Cray 1을 기준으로, Livermore Loops·Linpack·Whetstone 벤치마크에서 Raspberry Pi·Android 기기·PC가 얼마나 앞섰는지 비교함
- 기준값은 Cray 1의 80MHz·최대 160MFLOPS 하드웨어 성능이며, 실제 비교에는 Livermore Loops 기하평균 11.9MFLOPS, Linpack 27MFLOPS, Whetstone 추정 6MFLOPS가 쓰임
- 2012년 Raspberry Pi 1은 Livermore Loops 기하평균 기준 Cray 1보다 4.6배 빨랐고, 2020년 Raspberry Pi 400은 세 벤치마크에서 각각 78.8배·49.5배·95.5배까지 올라감
- 2021년 중급 Android 폰의 Kryo 570 CPU는 단일 코어 기준 123배·74배·151배였고, Core i5 1135G7 노트북은 AVX-512 컴파일에서 359배·337배·226배를 기록함
- SIMD와 멀티스레드를 쓰면 격차가 더 커지지만, AVX-512의 fused 연산은 일부 벤치마크에서 기존 기대값과 다른 수치 결과를 만들 수 있음
비교 기준이 된 벤치마크와 Cray 1
- 비교의 중심은 초기 Cray 1 성능 검증에 쓰인 Lawrence Livermore Laboratory program kernels, 즉 Livermore Loops임
- 결과는 1990년대에 C 코드로 변환한 버전을 사용함
- Livermore Loops는 각 루프별 MFLOPS와 최소·최대·여러 평균을 내며, 공식 평균은 기하평균임
- 보조 비교에는 Linpack 100과 Whetstone이 쓰임
- Linpack은 PC용으로 변환되어 Netlib에 수용된
linpack-pc.c기반임 - Whetstone은 원 저자인 Harold Curnow 이후 설계 책임을 이어받아 확장 변형을 만들었고, 100% 벡터화 버전은 영국에 도입된 첫 Cray 1 시스템을 초기 대상으로 삼음
- Linpack은 PC용으로 변환되어 Netlib에 수용된
- Cray 1의 주요 기준값은 다음과 같음
- 80MHz Cray 1의 최대 가능 하드웨어 성능은 linked multiply and add로 클록당 두 결과를 내는 160MFLOPS로 알려짐
- Livermore Loops 결과는 최대 82.1MFLOPS, 기하평균 11.9MFLOPS, 최소 1.2MFLOPS임
- Linpack은 27MFLOPS, Whetstone은 Cray XMP 결과를 바탕으로 6MFLOPS로 추정됨
Raspberry Pi가 Cray 1을 넘은 지점
- 2013년에 첫 Raspberry Pi에서 Linux용 PC 벤치마크와 본질적으로 같은 프로그램을 실행함
- 당시 비교 문구는 1978년 Cray 1이 700만 달러, 10,500파운드, 115kW 전원 공급 장치를 필요로 했고, Raspberry Pi는 약 70달러, 몇 온스 무게, 5W 전원 공급 장치를 쓰며 Cray 1보다 4.5배 이상 빠르다는 내용임
- 이 비교는 Livermore Loops 공식 기하평균 기준임
- Pi 1의 세 주요 측정값은 Livermore Loops 55MFLOPS, Linpack 42MFLOPS, Whetstone 94MFLOPS임
- Cray 1 대비 CPU MHz는 8.8배
- Cray 1 대비 MFLOPS는 각각 4.6배, 1.6배, 15.7배임
- 2020년 Raspberry Pi 400은 1800MHz에서 32비트 기준 Livermore Loops 819MFLOPS, Linpack 1147MFLOPS, Whetstone 498MFLOPS를 냄
- Pi 400의 64비트 SIMD 컴파일 결과는 Cray 1 대비 78.8배·49.5배·95.5배임
Android ARM CPU 결과
- 2012년에 벤치마크를 Android에서 네이티브 ARM 코드로 실행하도록 변환했고, Java 프런트엔드 프로그램이 필요했음
- 초기 Android 태블릿은 빠른 부동소수점 계산을 지원하는 하드웨어나 소프트웨어가 부족한 경우가 있었음
- 2012년 ARM Cortex-A9 800MHz 결과는 Livermore Loops 20MFLOPS, Linpack 11MFLOPS, Whetstone 22MFLOPS임
- CPU MHz는 Cray 1의 10배였지만, MFLOPS 배율은 각각 1.7배, 0.4배, 3.7배에 그침
- 이후 800MHz V7-A9는 115MFLOPS, 101MFLOPS, 155MFLOPS로 개선됨
- Cray 1 대비 9.7배, 3.7배, 25.8배임
- 2021년 중급 폰의 Kryo 570 CPU는 2000MHz에서 Livermore Loops 1468MFLOPS, Linpack 1986MFLOPS, Whetstone 905MFLOPS를 기록함
- Cray 1 대비 123배·74배·151배
- CPU MHz는 Cray 1 대비 25배임
Windows와 Linux PC의 단일 코어 성능
- 1990년대부터 Intel CPU용 벤치마크를 DOS, OS/2, Windows, Linux용으로 개발함
- 평균 Cray 1 Livermore Loops 점수에 처음 도달한 PC는 1994년 100MHz Pentium임
- Livermore Loops 12MFLOPS, Linpack 12MFLOPS, Whetstone 16MFLOPS
- Cray 1 대비 CPU MHz와 세 MFLOPS 비교는 약 1.3배, 1.0배, 0.44배, 2.6배임
- 1995년 Pentium Pro 200MHz는 Livermore Loops 34MFLOPS, Linpack 49MFLOPS, Whetstone 41MFLOPS를 냄
- Cray 1 대비 2.9배, 1.8배, 6.8배임
- 2007년 Core 2 1820MHz 단일 코어는 413MFLOPS, 998MFLOPS, 374MFLOPS를 기록함
- Cray 1 대비 35배, 37배, 62배임
- 2021년 Core i5 1135G7 노트북은 4150MHz에서 1387MFLOPS, 3541MFLOPS, 802MFLOPS를 냄
- Cray 1 대비 117배·131배·134배
SIMD 컴파일의 영향
- SSE, AVX, AVX-512 SIMD 옵션으로 컴파일한 결과도 비교함
- SSE는 128비트, AVX는 256비트, AVX-512는 512비트 벡터 레지스터를 사용함
- 단정밀도는 각각 4·8·16개, 배정밀도는 2·4·8개 숫자를 동시에 처리하는 방식임
- FMA가 쓰이면 최대 기대 성능이 두 배가 될 수 있지만, 계산 결과 정확도가 약간 달라질 수 있음
- 벤치마크는 이런 차이를 오류로 보고함
- Windows SIMD 결과에서 Core i5는 Cray 1 대비 Livermore Loops 238배, Linpack 190배, Whetstone 182배를 기록함
- Linux에서 gcc 9.3.0과 Ubuntu 환경으로 컴파일한 결과는 더 높았음
- AVX 결과는 Cray 1 대비 300배, 259배, 179배
- AVX-512 결과는 359배·337배·226배
- AVX-512 실행 파일은 해당 옵션이 없는 이전 CPU에서 실행하면 프로그램 실패 보고가 발생함
Vector Whetstone과 과거 슈퍼컴퓨터 비교
- Vector Whetstone은 스칼라 Whetstone과 같은 기능을 실행하되, 벡터 길이 매개변수로 정해지는 연속 메모리 위치를 대상으로 함
- Cray 1은 벡터 길이 64워드 이상에서 최대 성능에 도달했고, 톱니 모양 패턴을 보였음
- 표에는 1978년부터 1991년까지 13개 슈퍼컴퓨터의 스칼라·벡터 Whetstone 결과가 포함됨
- Cray Y-MP는 Cray 1보다 클록과 스칼라 MFLOPS가 약 2배, 벡터 MFLOPS가 4배로 제시됨
- Cray Y-MP는 두 개의 벡터 유닛을 갖춘 시스템임
- Core i5 AVX-512 결과는 Vector Whetstone에서 단정밀도 평균 28,303MFLOPS, 배정밀도 평균 20,346MFLOPS임
- Cray 1 대비 602배·433배
- 최대 단정밀도 속도는 75.1GFLOPS임
- Raspberry Pi 400의 Vector Whetstone은 단정밀도 평균 2131MFLOPS, 배정밀도 평균 1184MFLOPS임
- Cray 1 대비 45배, 25배임
멀티스레드 Whetstone과 MP MFLOPS
- MP Whetstone은 표준 Whetstone 코드 여러 개를 단일 프로그램에서 1·2·4·8스레드로 실행함
- 단일 CPU 코어와 비교한 멀티코어 처리량을 보여주기 위해 사용됨
- Core i5 노트북은 1·2스레드에서 약 4150MHz, 4·8스레드에서 약 3800MHz로 동작한 것으로 Performance Monitor에 표시됨
- MP Whetstone 8스레드 결과는 다음과 같음
- Core i5 노트북 AVX-512는 Cray 1 대비 1521배
- Android Kryo 570 폰은 757배
- Raspberry Pi 400은 400배
- MP MFLOPS는 부동소수점 곱셈과 덧셈 조합을 실행해 거의 최대 성능을 보이도록 만든 벤치마크임
- 2·8·32 floating point operations per data word를 실행함
- 기본은 8스레드지만 실행 시 매개변수로 최대 64스레드까지 지정할 수 있음
- Core i5 노트북의 MP MFLOPS 최고 결과는 다음과 같음
- 단정밀도 325,915MFLOPS, Cray 1 대비 2671배
- 배정밀도 160,641MFLOPS, Cray 1 대비 1317배
- Android 폰 단정밀도 35,686MFLOPS, Cray 1 대비 293배
- Raspberry Pi 400 단정밀도 30,150MFLOPS, Cray 1 대비 247배
수치 정확도와 예상보다 빠른 결과
- AVX-512를 사용한 Livermore Loops에서는 일부 체크섬 정확도가 기존 15~16자리에서 12~13자리로 낮아진 사례가 있음
- fused 연산은 별도 명령마다 반올림하는 대신 한 번만 반올림하는 것으로 보임
- Linpack AVX-512와 Whetstone SSE에서도 Core i5 노트북에서 비표준 sumcheck 또는 결과 차이가 기록됨
- SSE와 AVX 결과 일부는 문서상 예상 최대 MFLOPS/MHz보다 높게 나옴
- Livermore Loops의 Core i5 SSE 예시는 3.56MFLOPS/MHz로, FMA 없이 가능하지 않다고 여겨지는 수준임
- AVX 예시는 4.86MFLOPS/MHz로 예상 최대보다 21.5% 높음
- 분해 코드 확인 결과, 해당 SSE·AVX 예시에는 fused multiply and add 형식 명령이 없었음
- AVX-512 MP MFLOPS 분해 코드는 fused multiply/add/subtract 명령을 포함함
- 산술 벡터 명령은 21개이고, 완전 FMA 형태의 최소 명령 수는 16개라서 달성 가능 속도는 완전 FMA 대비 76.19%로 계산됨
- 이 조정으로 해당 함수 실행 시 Cray 1 최대 속도 추정은 160MFLOPS에서 122MFLOPS로 낮아짐
작업 종류에 따라 달라지는 격차
- Core i5 AVX-512, Android 폰, Raspberry Pi 400의 대표 Cray 1 대비 배율은 작업 종류에 따라 크게 달라짐
- 단일 코어 계열 비교에서 Core i5 AVX-512는 Livermore Loops 평균 359배, Linpack 337배, Whetstone 226배임
- Android 폰은 Livermore Loops 평균 123배, Linpack 74배, Whetstone 151배를 기록함
- Raspberry Pi 400은 Livermore Loops 평균 79배, Linpack 50배, Whetstone 96배 수준임
- 멀티프로그램·멀티스레드·SIMD를 활용하는 작업에서는 단순 단일 코어 비교보다 훨씬 큰 차이가 나며, 최신 CPU의 코어 수·클록 저하·big/LITTLE 구성 때문에 멀티코어 성능은 더 예측하기 어려워짐
댓글과 토론
Hacker News 의견들
-
이런 비교를 보면 벤치마크보다 먼저, 당시 Cray-1에서 돌렸을 법한 가장 “영웅적인” 실제 계산이 무엇이었고 그걸 오늘날 Raspberry Pi 같은 장비에서 어떻게 재현할 수 있을지가 궁금해짐
날씨·기후 모델일 수도 있고, 방사선-유체역학일 수도 있음. 현대 유한요소해석 소프트웨어와 비교하면 정밀도는 거의 확실히 매우 낮겠지만, 시도 자체는 재미있을 듯함- 핵무기 시뮬레이션이었을 가능성이 큼
첫 장비가 Los Alamos로 갔음
https://www.theatlantic.com/technology/archive/2014/01/these... - 초기 고객 중 하나가 European Centre for Medium-Range Weather Forecasts였으니, 아마 중기 기상 예보에 썼을 것 같음
- Cray-1은 아니지만, 몇 년 뒤 해군이 Cray 90으로 선체 주변 유동을 모델링하는 전산유체역학 계산을 했고 코드는 Fortran으로 작성됐음
그때 작성한 코드에 다시 접근할 수 있으면 좋겠음. Cray에서 몇 분 또는 몇 시간 걸리던 작업이 지금은 Raspberry Pi에서 몇 초 만에 돌 가능성이 큼 - Spec ‘06부터 돌려볼 수 있음. 그런 “영웅적인” 작업부하의 마이크로 커널들이 들어 있음
- 1979년쯤 Boulder의 NCAR 시설을 견학했고, 그곳 Cray-1 좌석에 앉아본 적이 있음
그러니 맞음, 날씨와 기후 계산에 쓰였음
- 핵무기 시뮬레이션이었을 가능성이 큼
-
자체 Cray-1 슈퍼컴퓨터를 가진 국립 연구소에서 일하던 사람을 알고 있었는데, 방문객들이 감상할 수 있도록 큰 관찰창이 있는 기계실에 놓여 있었음
그가 아는 VIP 대형 투어 그룹이 오기 직전에 Cray-1 안에 숨어서 기다렸다가, 투어 그룹이 도착하자 청바지 지퍼를 올리며 안도한 듯 멋쩍은 표정으로 Cray-1 안에서 걸어나왔고, 창 너머로 자신을 멍하니 보는 투어 그룹을 보고 놀란 척하며 황급히 사라졌음 -
벤치마크 말고도 그렇게 빠르게 느껴지게 해줄 소프트웨어가 있는지 궁금함
지금 쓰는 GUI, IDE, 컴파일러, 오피스 같은 소프트웨어는 386에서 돌리던 것들의 더 발전한 버전처럼 느껴짐. 지금 Met에서 쓰는 소프트웨어는 수백만 배 빠른 컴퓨터를 전제로 설계됐겠지만, 당시 Cray가 필요했던 소프트웨어가 어딘가에는 있을 것 같음- 없음. Cray-1은 일괄 처리 작업을 돌렸고, 대부분 몇 시간이나 며칠 걸리는 과학 시뮬레이션이었음
터미널 인터페이스가 있었고 실시간 상호작용 애플리케이션 용도로 쓰이지 않았음 - 오래된 Fortran 물리 코드가 가장 가능성 있어 보임
예를 들면 행렬 원소로부터 산란 단면적을 계산한다든가, 벡터화 가능한 선형대수가 많은 작업 같은 것임 - 당시 몇 시간 걸리던 많은 작업은 지금은 1초도 안 걸릴 수 있음
기계공학을 생각해보면, 당시에는 자동차가 충돌에서 어떻게 변형되는지 시뮬레이션했을 수 있음. 지금은 비슷한 시뮬레이션을 비디오 게임에서 재미로 실시간 수행할 수 있음. 게임에서는 물리적으로 정확한 모델이 실제로 필요하지 않아 거의 안 하는 것으로 알지만, 가능은 함
렌더링도 마찬가지임. 당시 Toy Story의 각 프레임은 몇 시간씩 렌더링했지만, 지금은 논쟁의 여지는 있어도 더 나은 그래픽을 실시간으로 만들어냄
- 없음. Cray-1은 일괄 처리 작업을 돌렸고, 대부분 몇 시간이나 며칠 걸리는 과학 시뮬레이션이었음
-
Jeff Geerling이 Raspberry Pi를 Cray-1 케이스 안에 넣는 후속 영상을 기다리는 중임
- Cray-1 모양의 PC 케이스가 나오면 정말 좋겠음
Raspberry Pi용으로 더 작은 것도 멋질 듯함 - 아니면 네트워크로 연결해서 가능한 한 많이 넣는 것도 좋겠음
- Cray-1 모양의 PC 케이스가 나오면 정말 좋겠음
-
벡터 1.0을 지원하는 RISC-V와 비교하는 편이 더 말이 됨
Cray-1은 벡터 머신이었기 때문임- 하드웨어 벡터 지원을 넣은 RISC-V CPU가 실제 칩으로 나온 적이 있나?
- 아니면 GPU나 TPU와 비교해도 됨
-
Raspberry Pi는 Cray-1과 달리 앉을 공간을 넉넉히 제공하지 않음
- 누군가 Cray 테마의 Pi Zero 클러스터를 만들었는데, 쥐라면 조건에 맞을지도 모름: https://www.clustered-pi.com/blog/clustered-pi-zero.html
- Cray 가격이면 인플레이션을 반영하지 않아도 쓸 만한 수의 의자를 살 수 있음
전기요금 절감까지 생각해보면 더 그렇고 - 맞음, Pi 케이스들은 실망스러웠음
제대로 냉각되는 제품이 거의 없음. flirc는 좋고, 팬 달린 것들은 그냥 거슬림
내장 브레드보드가 있는 Pi 케이스가 있으면 좋겠음
아니면 편하게 앉을 수 있는 케이스도 좋고 - 간소한 디자인에서는 Cray-1만큼의 멋도 없음
-
2013년에 최신이자 가장 비싼 Intel x86 CPU를 사서 새 PC를 조립했음
아내가 사무실에 들어와 화면의 그래프를 보며 “일하는 건 아닌 것 같은데, 뭘 하는지는 잘 모르겠네?”라고 했음
“내 PC가 언제쯤 지구상에서 가장 빠른 컴퓨터였을지 계산 중이야. 보니까 1992년이면 방 하나를 꽉 채우던 국방부의 최신 9천만 달러짜리 슈퍼컴퓨터보다 더 계산을 잘했을 것 같아, 믿어져?”라고 답했음
“좋네. 그게 우리 카드값 갚는 데는 어떻게 도움이 되는데?”라고 돌아왔음
농담은 제쳐두고, 이런 계산에 쓸 데이터는 꽤 있음. 예를 들면 여기: https://en.wikipedia.org/wiki/TOP500
과거로 외삽하거나 예전 데이터를 찾으면, 내 계산으로는 이 PC를 1981년으로 가져가면 지구상의 모든 컴퓨터를 합친 것보다 더 빠르다는 식의 말도 안 되는 결론이 나왔음- Top500에서 좋아하는 장비 중 하나가 SystemX임
https://www.top500.org/system/173736/
2004년에 도입됐을 때 Apple PowerPC 970 시스템 1100대로 구성된 이 배열은 목록에서 7번째로 강력한 컴퓨터였음
Linpack 성능은 12,250.00 GFlop/s였음 - 또 재미있는 건 내 휴대폰이 Top500 목록의 하위권에 들어갈 수 있었던 가장 최근 연도를 찾아보는 것임
- Top500에서 좋아하는 장비 중 하나가 SystemX임
-
Cray-1에는 훨씬 나은 소파가 있음
- Cray-1의 푹신한 좌석은 전원공급장치를 덮고 있음
Mountain View의 Computer Museum에 있는 Cray-1이 로비 행사 케이터링 물품 보관대로 쓰이는 걸 보고 슬펐음 - 컴퓨터 좌석을 되살려야 함
- Cray-1의 푹신한 좌석은 전원공급장치를 덮고 있음
-
요약하면, 10년 전에는 Raspberry Pi와 Android 휴대폰이 몇 배 더 빨랐고, 지금은 대략 100배 더 빠름
주머니에 들어간다는 점을 생각하면 꽤 인상적임- 현대적인 운영체제가 있어서 속도를 늦춰주니 다행임 /s
-
몇 년 전에 SPARCstation 20 Model 60과 Raspberry Pi의 Raspbian을 비교해본 적이 있음. 이 SPARCstation은 BYTE UNIX Benchmark가 기준으로 삼는 시스템임: https://news.ycombinator.com/item?id=10795324
벤치마크 기준으로 원래 Raspberry Pi는 SPARCstation 20 성능의 6~7배였음