大きく言うと、当時は「HPCに必要な性能と運用環境を、ひとまとまりで提供していたのが、POWER/SPARCなどのCPUと商用UNIXを使うシステムだった」からです。 その後、量産部品とLinuxを使うシステムでも必要な性能を得られるようになり、価格や調達の自由度が効いてきました。単に「昔は特殊なものを使っていた」というより、合理的な選択肢が変わった、と考えると理解しやすいです。(IBM)
ここでは主に1990年代から2000年代の移行を中心に、CPUの事情とOSの事情を分けて説明します。
1. なぜPOWERやSPARCなどのCPUだったのか
科学技術計算に必要な部分へ、積極的に性能を投入していた
HPCで重要なのは、クロック周波数だけではありません。浮動小数点演算をどれだけ処理できるか、演算器へメモリから十分な速さでデータを供給できるか、といった部分が重要です。
当時の高性能RISC機では、そうした部分が強化されていました。例えばIBMのPOWER2は、浮動小数点演算器を2基備え、キャッシュ容量やメモリからキャッシュへの転送帯域も拡大していました。その後のPOWER3では64bitアドレス空間や大容量の共有メモリも利用できました。CPU単体だけでなく、メモリ系まで含めて大きな数値計算を処理する設計だったわけです。(ウェイバックマシン)
ここにはRISCという設計方針も関係しています。命令体系を整理し、命令の処理を流れ作業にするパイプラインなどを効率よく実装することで、高性能を目指しました。IBMのRS/6000も、科学技術・工学用途に使われる高性能なワークステーション/サーバーとして展開されています。(IBM)
ただし、「RISCだから必ずx86より速い」という意味ではありません。 命令セットの分類と、実際の製品が備える演算器・キャッシュ・メモリ帯域は別の話です。同じ命令セットでも、どこへ回路や電力の予算を配分するかで、得意な計算は変わります。
SPARCについても、その区別が重要です。例えば「京」のSPARC64 VIIIfxは、単に一般的なSPARC CPUを大量に並べたというより、科学技術計算向けの性能、電力効率、エラー訂正や命令再実行による信頼性を重視して開発されたCPUでした。選ばれた理由は「SPARCという名前」ではなく、その具体的な実装がシステムの目標に適していたことです。(富士通アーカイブス情報)
なお、IBMのPOWERとPowerPCは関連する系列ですが、厳密には同じ名称ではありません。PowerPCはPOWERを基に、IBM・Apple・Motorolaの協業で生まれました。HPCの歴史では両方が登場します。(IBM)
2. なぜOSもLinuxではなくAIXなどだったのか
OSだけを自由に選ぶのではなく、計算システム全体を購入していた
ここが特に重要です。
現在の感覚では「まずサーバーを買い、そこへLinuxを入れる」と考えがちですが、当時のベンダー製HPCでは、ハードウェアと、それを十分に活用するソフトウェア環境が密接に結び付いていました。
例えばIBMのSPシステムには、AIXだけでなく、高速なノード間通信、C/Fortranコンパイラ、数値計算ライブラリのESSL、MPIを含む並列実行環境、ジョブ管理のLoadLeveler、並列ファイルシステムのGPFSなどが用意されていました。当時のIBMの並列実行環境は、AIXとPOWERプラットフォームに依存していました。(ウェイバックマシン)
したがって利用者から見ると、選択は、
「同じ機械で、AIXとLinuxのどちらを入れようか」
というより、
「必要な計算を実行できる、ハードウェア・開発環境・運用環境の組み合わせを選ぶ」
という性格が強かった、と捉えるのが適切です。
別のOSがCPU上で起動するだけでは、同等のHPCシステムにはなりません。通信装置の対応、コンパイラによる最適化、並列実行、障害の診断まで含めて使える必要があるからです。
AIXには、先に蓄積された製品としての実績があった
AIXは1986年から続くOSで、企業の重要業務などでも使われてきた製品です。HPCでも、単に計算が速いだけでなく、継続して運用できることや、不具合を調査・修正してもらえることに価値があります。既存の製品基盤を利用するのは合理的でした。(IBM Community)
ただし、これは**「AIXを使うと、OSが浮動小数点演算を特別に速く実行してくれる」という話ではありません。** 数値計算の中心部分を実行するのはCPUであり、その命令を生成・選択するのはコンパイラや数値計算ライブラリです。OSにもメモリ管理や通信などを通じた影響はありますが、採用理由はOS単体の速さというより、全体としての性能と完成度です。
また、「当時のLinuxはHPCに使えなかった」とするのも言い過ぎです。1994年には、NASAでLinuxなどのオープンなソフトウェアと量産部品を用いるBeowulfプロジェクトが始まっています。商用UNIX機とLinuxクラスタは、用途や規模に応じて並存しながら移行したのです。(Beowulf)
3. では、なぜx86+Linuxへ移っていったのか
x86側の数値計算能力が強化された
x86も同じ性能のままではありませんでした。例えばSSE2では、倍精度浮動小数点数をまとめて処理するSIMD命令が導入され、その後はAVXなどで演算機能が拡張されました。科学技術計算に必要な機能が、広く流通するCPUにも取り込まれていったわけです。(Intel)
ここで大事なのは、x86があらゆる用途で最高性能になる必要はなかった、ということです。十分に並列化できる計算なら、判断基準は「CPUを1個買ったときの最高性能」だけでなく、同じ予算でシステム全体としてどれだけ計算できるかになります。
量産部品と、共通の並列ソフトウェアを使う利点が大きくなった
PC市場向けに大量に供給されるCPU、メモリ、ネットワーク部品などを利用できれば、HPC専用の部品だけで構成するより、価格競争や大量生産の恩恵を受けやすくなります。さらに、ネットワークの価格性能比の向上と、MPIなどの共通の並列プログラミング環境が、量産部品を使ったクラスタの実用性を高めました。これらはBeowulfの発展要因としても挙げられています。(Beowulf)
ただし、「Linuxクラスタが登場して初めて、複数の計算機をつなぐようになった」わけではありません。前述のIBM SPも並列システムです。変化の中心は、並列化の発明ではなく、より広く流通する部品と共通ソフトウェアで並列機を構築できるようになったことです。(ウェイバックマシン)
Linuxは、UNIXの使い方を引き継ぎつつ共通基盤になれた
LinuxはUNIXの機能を再実装し、POSIXなどとの互換性を目指しているため、UNIX系の開発・運用の考え方を引き継ぎやすいOSです。また、もともとはx86向けに開発されましたが、多数のCPUアーキテクチャに対応しています。(kernel.org)
オープンソースであることも重要でした。実際、初期のBeowulfではネットワーク性能を改善するためにLinuxのドライバが改修されています。単なるライセンス費の節約だけでなく、必要に応じて調査・変更でき、共通の環境を多くの組織で育てられることが利点でした。(Beowulf)
4. 「x86への移行」と「Linuxへの移行」は別の現象
この2つは重なって進みましたが、同じことではありません。実例を見ると明確です。
| システム | CPU | OS |
|---|---|---|
| 京〔2011年のシステム〕 | SPARC64 VIIIfx | Linux |
| Summit〔2018年のシステム〕 | IBM POWER9+NVIDIA GPU | Red Hat Enterprise Linux |
「京」はSPARCでありながらLinuxを使い、SummitもPOWER系CPUでLinuxを使っていました。つまり、非x86のCPUを採用することと、AIXなどの商用UNIXを採用することは、必ずしもセットではありません。 (TOP500)
まとめると、昔は**「高性能な計算機を、メーカーがソフトウェアまで一体で完成させる」ことの価値が大きく**、後には**「広く流通する部品と共通のOS・ソフトウェアを組み合わせる」ことの価値が大きくなった**、という変化です。
「RISCやAIXが間違った選択だった」のではなく、同じ予算で、必要な計算を速く、確実に終わらせるための最適な構成が変わったと見るのが本質です。