- 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 は3つのベンチマークでそれぞれ 78.8倍・49.5倍・95.5倍に達する
- 2021年のミドルレンジ Android スマートフォンの Kryo 570 CPU は単一コア基準で 123倍・74倍・151倍、Core i5 1135G7 ノートPCは 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 システムを初期対象としていた
- Cray 1 の主な基準値は次の通り
- 80MHz の Cray 1 の最大ハードウェア性能は、linked multiply and add によりクロック当たり2結果を出す 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 の3つの主要測定値は Livermore Loops 55MFLOPS、Linpack 42MFLOPS、Whetstone 94MFLOPS
- CPU MHz は Cray 1 の 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 と3つの MFLOPS 比較は約 1.3倍、1.0倍、0.44倍、2.6倍
- 1995年の Pentium Pro 200MHz は Livermore Loops 34MFLOPS、Linpack 49MFLOPS、Whetstone 41MFLOPS を記録
- 2007年の Core 2 1820MHz 単一コアは 413MFLOPS、998MFLOPS、374MFLOPS を記録
- 2021年の Core i5 1135G7 ノートPCは 4150MHz で 1387MFLOPS、3541MFLOPS、802MFLOPS を記録
SIMD コンパイルの影響
- SSE、AVX、AVX-512 の SIMD オプションでコンパイルした結果も比較
- SSE は 128ビット、AVX は 256ビット、AVX-512 は 512ビットのベクトルレジスタを使用
- 単精度ではそれぞれ 4・8・16 個、倍精度では 2・4・8 個の数値を同時処理する方式
- FMA を使うと最大期待性能は2倍になり得るが、計算結果の精度がわずかに変わる可能性がある
- 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 は2基のベクトルユニットを持つシステム
- Core i5 の AVX-512 結果は Vector Whetstone で単精度平均 28,303MFLOPS、倍精度平均 20,346MFLOPS
- Cray 1 比で 602倍・433倍
- 最大単精度速度は 75.1GFLOPS
- Raspberry Pi 400 の Vector Whetstone は単精度平均 2131MFLOPS、倍精度平均 1184MFLOPS
マルチスレッド Whetstone と MP MFLOPS
- MP Whetstone は標準 Whetstone コードを複数、単一プログラム内で 1・2・4・8 スレッドで実行
- 単一 CPU コアと比べたマルチコア処理量を示すために使用
- Core i5 ノートPCは Performance Monitor 上で、1・2 スレッドでは約 4150MHz、4・8 スレッドでは約 3800MHz で動作していた
- MP Whetstone 8スレッド結果は次の通り
- Core i5 ノートPCの 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 ノートPCの 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 演算は各命令ごとに丸めるのではなく、1回だけ丸めているように見える
- Linpack AVX-512 と Whetstone SSE でも、Core i5 ノートPCで非標準の 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 構成のため、マルチコア性能はさらに予測しにくくなる
1件のコメント
Hacker Newsのコメント
こういう比較を見ると、ベンチマークより先に、当時の Cray-1 で動かしていたであろう最も「英雄的な」実際の計算は何だったのか、そしてそれを今日の Raspberry Pi のような機器でどう再現できるのかが気になる。
気象・気候モデルかもしれないし、放射線流体力学かもしれない。現代の有限要素解析ソフトウェアと比べれば、精度はほぼ確実にかなり低いだろうが、試み自体は面白そうだ
最初の導入先は Los Alamos だった。
https://www.theatlantic.com/technology/archive/2014/01/these...
当時書かれたコードに再びアクセスできたらいいのにと思う。Cray で数分から数時間かかっていた作業が、今なら Raspberry Pi で数秒で動く可能性が高い
だからその通りで、気象や気候の計算に使われていた
自前の Cray-1 スーパーコンピュータを持つ国立研究所で働いていた人を知っているが、訪問客が眺められるように大きな観察窓のある機械室に置かれていた。
彼は、自分が知っているVIPの大規模ツアーグループが来る直前に Cray-1 の中に隠れて待ち、ツアーグループが到着すると、ジーンズのジッパーを上げながら安堵したような気まずい表情で Cray-1 の中から歩いて出てきて、窓の向こうでぽかんと見つめるツアー客たちに気づいて驚いたふりをし、そのまま慌てて姿を消した
ベンチマーク以外に、そういう速さを実感させてくれるソフトウェアがあるのか気になる。
今使っている GUI、IDE、コンパイラ、オフィスのようなソフトウェアは、386で動いていたものの発展版のように感じる。今 Met で使っているソフトウェアは数百万倍速いコンピュータを前提に設計されているのだろうが、当時 Cray が必要だったソフトウェアがどこかにはある気がする
端末インターフェースはあったが、リアルタイムの対話型アプリケーション向けには使われていなかった
たとえば行列要素から散乱断面積を計算するようなものや、ベクトル化しやすい線形代数が多い処理などだ
機械工学で考えると、当時は自動車が衝突でどう変形するかをシミュレーションしていたかもしれない。今では似たようなシミュレーションをビデオゲームで遊びとしてリアルタイムに実行できる。ゲームでは物理的に正確なモデルは実際にはほとんど必要ないので、あまりやっていないとは思うが、可能ではある。
レンダリングも同じだ。当時は Toy Story の各フレームのレンダリングに何時間もかかっていたが、今では議論の余地はあっても、より良いグラフィックスをリアルタイムで生成している
Jeff Geerling が Raspberry Pi を Cray-1 の筐体に入れる続編動画を待っている
Raspberry Pi 用のもっと小さいものでもかっこよさそうだ
ベクター 1.0 をサポートする RISC-V と比較するほうが、より筋が通っている。
Cray-1 はベクターマシンだったからだ
Raspberry Pi は Cray-1 と違って、座るための十分なスペースを提供してくれない
電気代の節約まで考えればなおさらだ
ちゃんと冷却できる製品がほとんどない。flirc は良いが、ファン付きのものはただうるさいだけだ。
ブレッドボードを内蔵した Pi ケースがあればいいのに。
あるいは快適に座れるケースでもいい
2013年に当時最新かつ最も高価な Intel x86 CPU を買って、新しい PC を組んだ。
妻が書斎に入ってきて、画面のグラフを見ながら「仕事してるようには見えないけど、何をしてるのかはよく分からないわね」と言った。
「この PC がいつ頃、地球上で最速のコンピュータだったはずかを計算してるんだ。見たところ、1992年なら、国防総省の部屋いっぱいの最新9000万ドルのスーパーコンピュータより計算能力が上だったみたいなんだけど、信じられる?」と答えた。
「いいわね。それがうちのカードの支払いにどう役立つの?」と返ってきた。
冗談はさておき、こういう計算に使えるデータはかなりある。たとえばここ: https://en.wikipedia.org/wiki/TOP500
過去に外挿したり昔のデータを探したりすると、私の計算では、この PC を1981年に持っていけば地球上のすべてのコンピュータを合わせたより速い、というようなばかげた結論になった
https://www.top500.org/system/173736/
2004年の導入時点で、Apple PowerPC 970 システム1100台で構成されたこのアレイは、リストで7番目に強力なコンピュータだった。
Linpack 性能は 12,250.00 GFlop/s だった
Cray-1 にはずっと良い ソファがある
Mountain View の Computer Museum にある Cray-1 が、ロビーイベントのケータリング用品置き場として使われているのを見て悲しくなった
要するに、10年前なら Raspberry Pi と Android スマートフォンのほうが数倍速く、今ではだいたい 100倍速い。
ポケットに入ることを考えると、かなり印象的だ
数年前に SPARCstation 20 Model 60 と Raspberry Pi の Raspbian を比較したことがある。この SPARCstation は BYTE UNIX Benchmark が基準にしているシステムだ: https://news.ycombinator.com/item?id=10795324
ベンチマーク基準では、元の Raspberry Pi は SPARCstation 20 の6〜7倍の性能だった