HPCの主力計算機はインテルアーキテクチャを搭載したLinux機です。ところがこの潮流は、WindowsやMacを利用されている方にとっては違和感があるかもしれません。WindowsやMacを日常的に利用されているなら、これらにHPC環境を搭載し、全てが統合された環境を便利に使いたいと願われるのは当然です。しかもWindowsやMac環境は、高速な浮動小数点演算性能が実現され、マルチプロセッサやマルチコアにも対応し、64bit化も実施され、ネットワーク環境も高速となり、開発環境も充実し、多くのHPC分野のアプリケーションも移植済みと、HPC計算機として必要な要素は十分に整備されています。それにもかかわらず現実には、マイナーなOSであるLinuxがHPCの主流となっています。それではなぜLinuxがHPCの主力OSとなっているのでしょうか。
HPCで利用される大部分のアプリケーションはUNIXやLinux上で開発され、利用されてきました。1980年頃にUNIX機が普及すると、その使い易さ、処理速度の速さ、大規模な計算が可能なこと、低価格なこと、運用が容易なことなどが評価され、HPC用のアプリケーションも活発に移植/開発/利用されるようになりました。その後UNIX機は時代をリードするHPC環境として活躍してきました。
UNIXは商用のOSですが、UNIX利用者の多くはオープンソースコミュニティーとの接点も多く、Linuxを併せて利用することへの違和感はありませんでした。さらにUNIX計算機を製造していたコンピュータメーカーもオープンソースコミュニティーに門戸を開き、開発リソースや成果物の相互利用に積極的だったことで、UNIX環境とLinux環境の交流が深まり、相互の棲み分けと役割分担が、話し合いにより醸成されてゆきました。その結果、中核的な業務はUNIXが担い周辺的な業務はLinuxが担う、という役割分担が一般化しています。そのためUNIX上で開発された膨大なソフトウェア資産はLinuxでも利用できるようになっています。
UNIX上のHPCソフトウェア資産をLinuxが継承するためには、ハードウェア的な性能と機能のギャップを解消することが課題として残っていました。UNIX機は早くから64bit化され、大容量メモリを搭載でき、高速なSMP環境が動作していました。これに対して初期のPC Linux機は、CPUこそ高速でしたが、32bitの制約があり、SMP並列では並列性能が出ないなど課題が山積していました。ところが僅か数年で64bit化が実現され、性能の出るマルチコア環境が普及し、大容量メモリが搭載できるようになりました。現在ではUNIXとLinuxのハード的な性能でも機能の差は解消されています。
UNIX上で開発されたソフトウェアは、移植の容易さからLinuxへ移植されます。するとLinux利用者が増加します。この新たな利用者は別のソフトウェアの移植を行います。すると別の利用者が新たに増加します。この循環が繰り返されることでLinux上のソフト資産は収穫逓増的に増加しています。
Linuxはオープンソースによる品質改善サイクルが効果的に機能している典型例です。次々と登場する新しいデバイスに対して、オープンソースの特長を活かし、次々と課題が解決され、性能が向上してゆきます。その成果も容易にシステムに反映できます。Linuxは最も安定して動作するOSの1つです。
Linuxでは幅広い開発環境が選択できます。商用の開発環境が充実しているだけではなく、フリーの開発環境も充実しています。並列計算の処理系に関してもUNUXやLinux上で開発された本家本元ですから、充実しているのは当然です。さらにオープンソースの特長を活かしたアップデートやFAQ、公開情報なども充実しています。
HPCでは高速・大規模ネットワークの必要性が高く、InfiniBand、Myrinet、10GbEなど幅広いハードウェアの選択肢が用意されています。さらにドライバや通信ライブラリの提供も充実しています。特にLinuxはソースコードが公開されていたり、アップデートを簡単にダウンロードできたりと、安心して利用できる環境が整備されています。もちろん、多くの情報が公開されており、ネットワーク上を調べることで幅広い技術情報を利用できます。
UNIXやLinuxはリモート環境が充実しており、マルチユーザに対応しています。そのため1台のシステムを複数のユーザが共同利用できます。リモート動作に対応したコマンドも豊富に用意されています。ファイルシステムもネットワーク利用を前提として設計されています。さらにネットワークログインにも対応しているので複数のユーザが各自のパソコンからリモートログインし、不自由さを感ずることなく利用できます。
UNIXやLinuxは基本設計からマルチユーザ/マルチジョブ/リモート運用環境が実現されており、これらの機能を応用したてシステム管理をアプリケーションで行うような仕組みとしてジョブ管理システムが開発されています。
これまで見てきたように、UNIXやLinuxによりHPC計算が発展してきました。さらにLinuxを用いることで本格的な計算機を低価格で実現でき、Linuxの利用は益々盛んになると思われます。これに対してプリ/ポスト機としてはWindows機やLinux機が優れています。用途に応じて使い分けることが基本です。
HPCのソフトウェア開発は、その大部分がUNIXやLinux上で行われています。Windows環境にはその一部が移植されています。しかし従来からのUNIXやLinuxユーザのWindowsへの移動は大きく進展していない模様です。
WindowsでのHPC利用は、プロの開発者が手がけたビルド済みの商用アプリケーション使用が主流です。ソースコードから開発されているユーザ様は少数派です。
オープンソースの世界では共通のプラットホームで作業に携わっている利用者が少ないと、トラブルが発生した場合の手がかりの少なさが大きな足枷となります。さらにOS、コンパイラ、MPIライブラリなどはバイナリでの商用版提供になるため、改良やアップデートは企業任せになります。WindowsベースのHPC環境を開発用いることは厳しい道になりそうです。